本主题解释了如何生成 JUnit 测试,该测试表示 web 浏览器中记录的操作。
本章包含:
关于 Junit 测试生成
SOAtest 可以生成 JUnit 测试,它代表一个新的或之前记录的 web 场景。可以根据 Web 应用程序设置功能测试,然后使用生成的 JUnit 测试用例来使用 JUnit 框架验证测试结果。它提供了测试脚本的灵活性以及 SOAtest 的易用界面,而不必了解新的测试脚本语言。
生成的类文件是基于 JUnit 的,并且依赖于以下 jar 文件。
来自 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>:
- grtlogger.jar
来自 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft:
- application_api.jar
- autoconf.jar
- common.jar
- lic_client.jar
- preference_api.jar
- util.jar
来自 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>:
- bcprov.jar
- commons-collections.jar
- commons-httpclient.jar
- commons-logging.jar
- mail.jar
- xercesImpl.jar
来自 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>/Parasoft:
- logging_api.jar
来自 <Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root/lib-java-mod:
- FESI.jar
来自 <Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root:
- com.parasoft.api.jar
- parasoft.jar
- webking.jar
- wizard.jar
来自 <Parasoft SOAtest install dir>/eclipse/plugins/com.parasoft.xtest.license.eclipse.core.web_<version>/lib:
- license_web.jar
前提条件
启动生成 JUnit 测试之前,先执行一次配置:
- 切换到 Java 透视图(选择 Window> Open Perspective> Other> Java)。
- 在工作空间中创建一个新的项目,并命名为
MyJUnitTest
。 - 在包视图中,右键单击新的 MyJUnitTest 项目,然后从快捷菜单选择 Properties 。
- 选择 Java Build Path,然后跳转至 Libraries 选项卡并单击 Add External JARs。
- 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version> 中的 jar 文件添加到项目的构建路径中。
- 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft 中的 jar 文件添加到项目的构建路径中。
- 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version> 中的 jar 文件添加到项目的构建路径中。
- 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>/Parasoft 中的 jar 文件添加到项目的构建路径中。
- 将所有驻留在 <Parasoft SOAtest installation dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root 中的 jar 文件添加到项目的构建路径中。
- 将所有驻留在 /eclipse/plugins/com.parasoft.xtest.license.eclipse.core.web_<version>/lib 中的 jar 文件添加到项目的构建路径中。
- 来自 Java Build Path> Libraries 选项卡:
- 单击 Add Library。
- 选择 JUnit,然后单击 Next。
- 确保将 JUnit library version 设置为 JUnit 4,然后单击 Finish。
在记录场景时,从该场景生成 JUnit 测试
若要在记录场景时,从该场景生成 JUnit 测试:
- 返回到 SOAtest 透视图。
- 打开 New 工具栏按钮(左上角)的下拉菜单,选择 Other,选择 SOAtest> Web> JUnit test from Web Browser Recording,然后单击 Next。
- 完成记录并生成 JUnit 测试向导页面,如下所示:
Start Recording From:输入要执行功能测试的站点的 URL。
记录与 SOAtest“实时”运行在同一台机器上的应用程序
若要记录与 SOAtest“实时”运行在同一台机器上的应用程序,不要使用 localhost。相反地,使用机器名(比如,mymachine.parasoft.com)或 IP 地址(比如,10.10.11.11)。
- Browser: 指定要记录测试的浏览器。
- Class Name: 输入生成的 JUnit 测试类的类名(例如,
MyJUnit
)。 - Package Name: 此值是可选的。如果包名不对应于输出位置决定的文件夹结构,则 SOAtest 将生成必要的子文件夹。输入
MyConvertedUnitTests
。 - Generate into Output Location 指定生成的测试类文件的目标文件夹。输入
${project_loc:MyJUnitTest}/src
。
- 点击 Finish 按钮。指定的开始页面将在选定的浏览器中打开。
指定希望通过在浏览器中跟随它来捕获的功能。可以单击链接、完成和提交表单、使用导航栏进行打开的 URLs、访问快捷方式、前进或后退,等等。
注意
为了保证记录正常运行,必须等到每个页面都已完全加载后再执行操作。 每次在执行操作之前,必须等待页面或页面的某些部分被重新加载。
提示- 完成表单
若要完成表单,请直接在 GUI 控件中输入值,就像实际导航站点一样。例如,输入用户名和密码,选择单选按钮,选中或清除复选框,等等。
记录会话时,请注意:
- 记录期间不支持 IE (网络选项高级设置)中的密码回调和自动完成。
- 不支持 Google 工具栏的自动填充功能。
- 如果在字段中输入术语的开头,而随后单击下拉菜单中的建议,则可能不会记录 "type" 测试。
6.关闭浏览器窗口。
将向指定的输出位置添加一个 JUnit 测试类。新项目将不会被创建或添加到测试用例资源管理器中。
从以前记录的场景生成 JUnit 测试
若要生成 JUnit 测试,它代表以前记录的测试场景:
- 返回到 SOAtest 透视图。
- 在测试用例资源管理器中,右键单击要为其生成 JUnit 测试的 web 场景,然后从快捷菜单选择 Generate JUnit Tests 。
- 完成 Generation Options 对话框,然后单击 Finish。可用选项包括:
- Class Name: 输入生成的 JUnit 测试类的类名。输入
MyJUnit
作为类名。 - Package Name: 此值是可选的。如果包名不对应于输出位置决定的文件夹结构,则 SOAtest 将生成必要的子文件夹。输入
MyConvertedUnitTests
。 - Generate into Output Location: 指定生成的测试类文件的目标文件夹。输入
${project_loc:MyJUnitTest}/src
。
- Class Name: 输入生成的 JUnit 测试类的类名。输入
提示- 管理多个测试
许多用户发现将所有测试放到同一个项目中很方便。然而,如果您愿意,可以创建多个项目。
执行生成的测试
若要执行生成的测试;
- 跳转至 Java 透视图。
- 刷新 MyJUnitTest 项目。应该看到一个表示生成的测试的节点。
- 右键单击 MyJUnit.java ,然后选择 Run As> JUnit Test。
也可以从命令行中执行这些测试,如 Junit 文档中所述。
配置 JUnit 测试执行的许可证信息
运行 SOAtest 生成的 JUnit 测试要求许可证信息。许可证信息有以下两种方式:
- 如果希望使用与本地 SOAtest 安装相同的许可证,只需在 Parasoft> Preferences> Parasoft> License下验证该许可证信息是否正确配置。然后,WebBrowser 将从传递给构造函数的安装根(比如
<SOAtest install root>/plugins/com.parasoft.xtest.libs.web_<version>/root/
)中检测许可证信息。 如果希望在没有本地安装 SOAtest 的机器上运行测试,或者如果希望使用与本地 SOAtest 安装不同的许可证信息,那么可以控制许可证信息,而不必打开 SOAtest 并修改 UI 中的首选项。为此,使用以下构造器通过许可证信息:
WebBrowser( String installRoot, int browserType, String ffExePath, String licenseServerLocation, int licenseServerPort, int licenseServerTimeout )
- 如果正在使用 Parasoft 许可证服务器管理许可证,那么必须使用以上构造器。
添加断言语句到生成的测试
SOAtest 生成的每个 JUnit 测试都由一个测试函数组成,该函数模拟 SOAtest 测试的测试序列。无论服务器什么时候返回响应,测试都将为测试函数中声明的响应对象赋值。应该在这些分配之后插入断言语句,以验证是否需要来自服务器的响应。
我们创建了注释块,并在其中建议在测试函数中放置断言。
例如:
public void testA() throws Exception { WebConversation wc = new WebConversation(); WebRequest req = new GetMethodWebRequest("http://mole/tests/"); WebResponse resp = wc.getResponse(req); //Begin assertions //End assertions WebLink link = resp.getLinkWith("popup.html"); link.click(); resp = wc.getCurrentPage(); //Begin assertions //End assertions WebForm form = resp.getFormWithName("childrenForm"); resp = form.submit(); //Begin assertions //End assertions }
在上面的 JUnit 测试函数中,每次为 WebResponse 对象分配一个新值时,都会出现这些块。