本主题解释了如何生成 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 测试之前,先执行一次配置:

  1. 切换到 Java 透视图(选择 Window> Open Perspective> Other> Java)。
  2. 在工作空间中创建一个新的项目,并命名为 MyJUnitTest
  3. 在包视图中,右键单击新的 MyJUnitTest 项目,然后从快捷菜单选择 Properties
  4. 选择 Java Build Path,然后跳转至 Libraries 选项卡并单击 Add External JARs
    1. 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version> 中的 jar 文件添加到项目的构建路径中。
    2. 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs_<version>/Parasoft 中的 jar 文件添加到项目的构建路径中。
    3. 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version> 中的 jar 文件添加到项目的构建路径中。
    4. 将所有驻留在 <Parasoft Test install dir>/plugins/com.parasoft.xtest.libs.base_<version>/Parasoft 中的 jar 文件添加到项目的构建路径中/。
    5. 将所有驻留在 <Parasoft SOAtest installation dir>/eclipse/plugins/com.parasoft.xtest.libs.web_<version>/root 中的 jar 文件添加到项目的构建路径中/。
    6. 将所有驻留在 /eclipse/plugins/com.parasoft.xtest.license.eclipse.core.web_<version>/lib 中的 jar 文件添加到项目的构建路径中/。
  5. 来自 Java Build Path> Libraries 选项卡:
    1. 单击 Add Library
    2. 选择 JUnit,然后单击 Next
    3. 确保将 JUnit library version 设置为 JUnit 4,然后单击 Finish

在记录场景时,从该场景生成 JUnit 测试

若要在记录场景时,从该场景生成 JUnit 测试:

  1. 返回到 SOAtest 透视图。
  2. 打开 New 工具栏按钮(左上角)的下拉菜单,选择 Other,选择 SOAtest> Web> JUnit test from Web Browser Recording,然后单击 Next



  3. 完成记录并生成 JUnit 测试向导页面,如下所示:
    • 开始记录:输入要执行功能测试的站点的 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
  4. 点击 Finish 按钮。指定的开始页面将在选定的浏览器中打开。
  5. 指定希望通过在浏览器中跟随它来捕获的功能。可以单击链接、完成和提交表单、使用导航栏进行打开的 URLs、访问快捷方式、前进或后退,等等。

    注意

    为了保证记录正常运行,必须等到每个页面都已完全加载后再执行操作。  每次在执行操作之前,必须等待页面或页面的某些部分被重新加载。

提示- 完成表单

若要完成表单,请直接在 GUI 控件中输入值,就像实际导航站点一样。例如,输入用户名和密码,选择单选按钮,选中或清除复选框,等等。

记录会话时,请注意:

  • 记录期间不支持 IE (网络选项高级设置)中的密码回调和自动完成。
  • 不支持 Google 工具栏的自动填充功能。
  • 如果在字段中输入术语的开头,而随后单击下拉菜单中的建议,则可能不会记录 "type" 测试。

     6.关闭浏览器窗口。

将向指定的输出位置添加一个 JUnit 测试类。新项目将不会被创建或添加到测试用例资源管理器中。

从以前记录的场景生成 JUnit 测试

若要生成 JUnit 测试,它代表以前记录的测试场景:

  1. 返回到 SOAtest 透视图。
  2. 在测试用例资源管理器中,右键单击要为其生成 JUnit 测试的 web 场景,然后从快捷菜单选择 Generate JUnit Tests
  3. 完成 Generation Options 对话框,然后单击 Finish。可用选项包括:
    • Class Name: 输入生成的 JUnit 测试类的类名。输入 MyJUnit 作为类名。
    • Package Name: 此值是可选的。如果包名不对应于输出位置决定的文件夹结构,则 SOAtest 将生成必要的子文件夹。输入 MyConvertedUnitTests
    • Generate into Output Location: 指定生成的测试类文件的目标文件夹。输入 ${project_loc:MyJUnitTest}/src

提示- 管理多个测试

许多用户发现将所有测试放到同一个项目中很方便。然而,如果您愿意,可以创建多个项目。

执行生成的测试

若要执行生成的测试;

  1. 跳转至 Java 透视图。
  2. 刷新 MyJUnitTest 项目。应该看到一个表示生成的测试的节点。
  3. 右键单击 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 对象分配一个新值时,都会出现这些块。

  • No labels