开放源代码测试框架 JUnit 和它的一些扩展(如 HtmlUnit)为 Web 应用程序测试带来了许多好处,特别是在极限编程(extreme programming,XP)环境中,并且用 WebSphere Studio 可以将它们很好的集成。
引言 HtmlUnit 是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架结构的 Java™ 测试程序。
与 HttpUnit 相比较而言,HtmlUnit 并不直接基于 HTTP 请求/响应操作,但是需要您编写基于 HTML 概念(如链接、窗体和表单等)的测试案例。HtmlUnit 的 Java API 可以提供 Java 对象,它可以将 HTML 文档以 DOM 树的形式进行遍历。与 XMLUnit 对比,HtmlUnit 专门针对 HTML 文件使用,且将 HTML 当作 XML 处理。然而,您不能使用 HtmlUnit 来检查两份 XML 之间的差别,或是检查由 XSLT 转换而生成的 XML。HtmlUnit 还适合黑箱测试类型。它能为您带来更多的选择,以选取 Java 测试 API,并为 Web 应用程序测试维护您的测试案例和测试方式。如果应用程序 Web 页面以 XHTML 方式创建,那么您仍然可以使用 HtmlUnit ,因为 XHTML 拥有良好的格式化文档结构。
范例应用程序 为了示范 HtmlUnit 的使用,我们可以使用 ibm.com 网站上的雇员目录应用程序。WebSphere® J2EE 应用程序和 IBM® Web 页面遵循 XHTML web 标准。IBM 以外的人员可以搜索 IBM 雇员的联系信息,只要他们知道员工的姓和国家位置。
测试 IBM 雇员目录
- 打开 IBM 主页 http://www.ibm.com,并单击底部的 Contact。
- 在 Contact IBM 页面右边稍下的位置,单击 Employee directory。
- 在 Employee directory 页面,从下拉列表中选择国家,输入 Last name 以及 First name,并单击 Submit。
- 验证搜索结果。需要验证的内容可以是页脚、元标签和页首等等。
//application home
homePage = (HtmlPage)webClient.getPage(url);
assertNotNull(homePage);
|
//application link click
HtmlAnchor anchor = homePage.getAnchorByHref(ApplicationURLs.APP_SEARCH_PAGE);
assertNotNull(anchor);
try {
employeesSearchPage = (HtmlPage) anchor.click();
assertNotNull(employeesSearchPage);
} catch (IOException ioe) {
ioe.printStackTrace();
}
|
//set the parameters for search
List formList = (List) employeesSearchPage.getAllForms();
HtmlForm searchForm = (HtmlForm) formList.get(1);
final HtmlSelect select = ( HtmlSelect )searchForm.getSelectsByName( "search_country" ).get( 0 );
select.setSelectedAttribute("ca", true);
//select.setSelectedAttribute("all", true);
final HtmlHiddenInput hiddenInput1 = (HtmlHiddenInput) searchForm.getInputByName("country");
hiddenInput1.setValueAttribute("us");
final HtmlHiddenInput hiddenInput2 = (HtmlHiddenInput) searchForm.getInputByName("language");
hiddenInput2.setValueAttribute("en");
final HtmlTextInput inputLastName = (HtmlTextInput)searchForm.getInputByName("lastname");
inputLastName.setValueAttribute("Shafi");
final HtmlTextInput inputFirstName = (HtmlTextInput)searchForm.getInputByName("firstname");
inputFirstName.setValueAttribute("Marie");
imageInput = (HtmlImageInput)searchForm.getInputByName("Submit");
try {
searchResultPage = (HtmlPage)imageInput.click();
assertNotNull(searchResultPage);
Document resultsPage = searchResultPage.getDocument();
//page content verification based on XML
//It depends on html documentation structure its self,
CommonTests.testResultsWhitespaceName(resultsPage,
"Employee Directory results page", "Shafi", "Marie");
} catch (Exception e) {
}
|
用 WebSphere Studio 进行测试 WebSphere Studio V5 以及以后的版本都与 JUnit 测试框架紧密集成。为了让你的测试案例能在 WebSphere Studio 上运行,您需要遵循基本的 JUnit 测试案例编程 API。对于每个案例来说,您都需要从 TestCase 扩展您的测试类。然后实现 setUp() 、testXXXX() 和 tearDown() 方法。为了能让你的测试案例在大型的项目中可维护并可重复使用,请遵循面向对象设计和其他标准实践。
在您开始测试之前,需要有一个最小化的 HtmlUnit 二进制 JAR 文件。在指定的目录中提取 lib。您可以从 SourceForge 下载稳定的 HtmlUnit 1.2.3 版本。
创建独立的范例 Java 项目 选择 File => New => Other , 在新的窗口中,选择 Java => Java project。
图 1. 范例 Java 项目。
为使用 HtmlUnit 配置 Java 构建类路径 在 new Java project 对话框中,选择 Libraries 选项卡并从 lib 目录添加外部 JAR 文件。对于 HtmlUnit 包,添加 JUnit.jar ,这在 WebSphere Studio plugin 目录中可以找到。
图 2. 测试案例构建类路径配置
输入范例应用程序测试代码 下载文章最后的 Download HtmlUnit_JavaSrc.zip 并将范例应用程序导入到您的 Java 项目。
运行测试案例 高亮显示您需要进行测试的测试案例或测试序列,单击 Run => Run as => JUnit。
图 3. 运行 JUnit
检查测试结果 选择 WebSphere Studio 中的 JUnit 视图,您便可以查看运行结果了。
图 4.JUnit HtmlUnit 测试结果
通过 Ant 脚本运行测试
<target name="htmlunit" depends="compile">
<junit printsummary="yes" haltonfailure="yes">
<classpath refid="junit.classpath"/>
<formatter type="plain"/>
<test name="sample.testcase.IBMEmployeeDirectoryPageTest"
haltonfailure="no" outfile="test-result" todir="${build.dir}">
</test>
</junit>
</target>
|
如果您尚未下载 HtmlUnit_JavaSrc.zip,请转至本文的底部单击 Download HtmlUnit_JavaSrc.zip 下载该文件。并修改 build.xml 文件,指定 build.dir 、junit.jar 和 htmlunit.libdir 参数。
- 使用 Ant 配置 WebSphere Studio。选择 Window => Preferences 并单击 Properties。将
build.compiler 设置成 org.eclipse.jdt.core.JDTCompilerAdapter 。
图 5. 为 Ant 进行 WebSphere Studio 配置
- 运行 Ant 脚本,运行结果将显示在 WebSphere Studio 控制台中。右键单击 build.xml 并选择 Run Ant。运行结果将显示在控制台和 Ant 输出文件中。
图 6. WebSphere Studio Ant 运行时设置
结束语 HtmlUnit 扩展了 JUnit Java 测试框架,为 Web 应用程序测试提供了更多的选择。HtmlUnit 可以使您通过使用 HTML Web 页面概念来测试 Web 应用程序,并且当您的 Web 内容遵循 XHTML 标准时,它也能良好的运行。
参考资料
作者简介 Christopher Wang 是 IBM 的 ibm.com Innovation and Strategy 团队的一名 XML 专家。他是 Brainbench 认证的 Web 开发人员并且在 1991 年获得纽约大学计算机科学专业 M.S. 学位。您可以通过 cpwang@us.ibm.com 与 Chris 联系。 |
Ning Yan 是 IBM 的 ibm.com Innovation and Strategy 团队中一名软件工程师。他的专长是 Web 应用程序的开发以及包括DB2、WebSphere 和开放源代码技术的业务解决方案的研究。他是 IBM 认证的 DB2 专家以及 Brainbench 认证的 Web 服务工程师和 Web 开发人员。他在 1996 年获得美国奥尔巴尼的纽约大学计算机科学 M.S. 学位。您可以通过 nyan@us.ibm.com 与 Ning 联系。
|
|