自动测试节省了您重复执行相同测试步骤的时间和精力。 本文介绍了jWebUnit,这是一组Java类,可用于开发Web应用程序的测试用例。 jWebUnit是一个开放源代码项目,根据BSD许可证可免费获得。 我将向您展示如何下载jWebUnit库,配置Eclipse平台以开发jWebUnit测试用例以及构建示例测试用例。
jWebUnit基于HttpUnit(用于自动测试Web应用程序的Java库)和JUnit单元测试框架(请参阅参考资料 )。 jWebUnit提供了用于导航Web应用程序的高级API,并结合了一组断言,这些断言用于通过链接,表单输入和提交,表内容以及其他典型的业务Web应用程序功能来验证导航的正确性。 jWebUnit以JAR文件的形式出现,可轻松插入大多数IDE,并包含其他必需的库。
对Web应用程序的自动测试意味着绕过Web浏览器,并通过您的程序使用该网站。 首先,我将向您展示JWebUnit的构建模块之一HttpUnit如何简化此任务。 HttpUnit可以模拟框架,JavaScript,页面重定向cookie等。 与JUnit一起使用时,HttpUnit可以快速验证网站的功能。
清单1显示了一个用HttpUnit编写的示例测试用例,它试图单击HttpUnit主页上的“ Cookbook”链接:
清单1中的代码使用your.proxy.com (第6行)连接到Internet。 如果您有直接的Internet连接,则可以注释掉此声明。 第8行中的语句在页面上搜索包含文本Cookbook的Web链接。 第9行中的语句单击该链接。 如果找到链接,则用户会看到消息“ Test Successful !! 。
清单2中的测试用例使用jWebUnit API来执行与清单1相同的任务:
如果您忽略清单2中特定于JUnit的代码,则可以看到测试用例现在已经非常简洁明了。 要查看的重要行是第6、11和12行。在第6行,基本URL设置为HttpUnit主页。 第11 /index.html相对路径/index.html处连接到站点。 第12行单击该页面上带有文本Cookbook的链接。 如果单击成功,则JUnit报告成功。 否则,它将报告异常。
每个jWebUnit测试用例的核心是net.sourceforge.jwebunit.WebTestCase类,它代表一个测试用例。 每个测试用例都必须从此类扩展。 ( net.sourceforge.jwebunit.WebTestCase类本身是从junit.framework.TestCase扩展的,该类代表JUnit中的一个测试案例。)表1描述了此类的一些常用方法:
另一个重要的类是net.sourceforge.jwebunit.TestContext 。 它建立了测试的环境。 您可以使用此类来处理Cookie,会话和授权等信息。 表2显示了此类的一些重要方法:
jWebUnit是用纯Java代码实现的,因此可以作为JAR文件使用(下载链接请参阅参考资料 )。 下载它之后,请按照以下步骤在Eclipse平台上配置jWebUnit库:
将下载的文件jwebunit-1.2.zip解压缩到一个临时目录(出于我们的目的,假定为C:\ temp)。 在Eclipse中创建一个名为jWebUnit的新Java项目。 在Package Explorer视图中右键单击jWebUnit项目,然后选择Properties 。 单击Java构建路径 。 在“库”选项卡中,单击“ 添加外部JAR” 。 浏览到C:\ temp \ jwebunit-1.2 \ lib目录,然后选择此目录中的所有JAR。 单击确定 。现在,您可以在jWebUnit项目下的Eclipse中开始开发jWebUnit测试用例。
现在该看看jWebUnit API的作用了。 我将引导您完成一个示例应用程序,以帮助您更好地了解jWebUnit的真正功能。 该应用程序是打开Google搜索页面并搜索文本HttpUnit的测试用例。 您希望应用程序测试以下方案:
打开Google主页http://www.google.com。 断言该页面包含名称为q的表单元素。 (在Google主页上,名为q的文本框是将用户查询作为输入的文本框。)应用程序使用此元素输入搜索条件。 在搜索文本框中输入字符串HttpUnit Home ,然后提交表单。 获取结果页面并断言它包含一个包含文本HttpUnit Home的链接。 单击带有文本HttpUnit Home的链接。现在已经准备好测试方案,您可以编写一个使用jWebUnit来实现这些要求的Java应用程序。
第一步是声明一个从WebTestCase扩展的类,如清单3所示:
如前所述,jWebUnit要求每个测试用例都必须从WebTestCase扩展。 searchLink存储传递的参数进行搜索。 您将此值作为命令行参数传递给测试用例。
下一步是声明入口点main()方法,如清单4所示:
main()方法通过调用junit.textui.TestRunner.run()执行JTest测试用例。 因为您需要运行GoogleTest测试用例,所以作为参数传递给run()方法的测试套件将GoogleTest.class作为参数。
JTest调用setUp()方法来设置基本URL和代理,如清单5所示:
清单5将基本URL设置为http://www.google.com 。 这意味着测试用例将相对于该URL开始。 接下来的两个语句将代理主机和代理端口设置为连接到Internet。 如果直接连接到Internet,则可以省略代理设置语句。
现在,您开始浏览该站点并输入搜索条件。 清单6显示了访问Web页然后测试所有方案的代码:
清单6中的代码连接到基本URL,并相对于/开始浏览。 然后断言该页面包含一个名为q的表单元素-Google主页上的查询条目文本框的名称。 下一条语句将名称为q的文本框设置为HttpUnit值。 下btnG语句提交名为btnG的表单提交按钮。 (在Google主页上,名为btnG的按钮是标记为Google Search的按钮。)在此对话中,提交了表单,下一页列出了搜索结果。 在结果页上,代码首先检查是否存在带有文本HttpUnit Home的链接。 如果链接不存在,则测试失败,并显示AssertionFailedError 。 如果存在链接,则测试将单击它。
现在,让示例应用程序运行:
下载示例应用程序j-webunitsample.jar(请参阅下载 )。 将j-webunitsample.jar解压缩到目录中。 例如,如果将其解压缩到C:\ temp,则将源文件和类文件放入C:\ temp \ com \ jweb \ test,并将setclasspth.bat放入C:\ temp。 编辑setclasspath.bat:将JAR_BASE设置为指向包含所有必需JAR的目录。 例如,如果您已在C:\ temp下提取jwebunit-1.2.zip文件,则将JAR_BASE设置为C:\ temp \ jwebunit-1.2 \ lib。 打开命令提示符,并将目录更改为C:\ temp。 执行setclasspath.bat 。 这将设置测试用例执行所需的CLASSPATH 。 使用命令java com.jweb.test.GoogleTest "HttpUnit Home"运行应用程序。执行测试用例后,在命令提示符下将打印出测试用例报告。 如果测试失败,该报告将类似于清单7中的报告:
如清单7所示,该测试用例以HttpUnit Hwee作为参数执行。 该测试用例将在断言时失败,因为结果页面不包含带有此文本的链接。 因此, junit.framework.AssertionFailedError 。
清单8使用HttpUnit Home作为参数执行。 测试用例找到带有此文本的链接,因此它通过了:
本文通过讨论jWebUnit框架的显着功能和最重要的类,并向您展示了如何使用它来创建简洁的测试用例,使您对jWebUnit框架有所了解。 jWebUnit具有更多的功能,可以在测试用例中使用。 它可以让您的测试计算网页上存在的链接数。 您可以断言页面中是否存在带有给定标签的字符串,表格或表单输入元素。 您可以玩cookie,例如断言存在cookie,删除cookie等。 然后您的测试可以单击带有特定文本的链接,该链接出现在其他文本之后。 如果您想为Web应用程序构建快速有效的测试用例,则jWebUnit可能是您最好的朋友。
翻译自: https://www.ibm.com/developerworks/java/library/j-jwebunit/index.html
相关资源:C#_MVC_WEB.API的简单DEMO