追求代码质量: 可重复的系统测试
2009-11-19 00:00:00 来源:WEB开发网清单 8 定义测试目标,称作 _run-system-tests。请注意此任务只 运行置于 test/system 目录下的系统测试。例如,清单 2 中定义的测试用例就位于这个目录下。
清单 8. 通过 Ant 运行 JUnit<target name="_run-system-tests">
<mkdir dir="${testreportdir}"/>
<junit dir="./" failureproperty="test.failure"
printSummary="yes" fork="true"
haltonerror="true">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter usefile="false" type="plain"/>
<classpath>
<path refid="build.classpath"/>
<pathelement path="${testclassesdir}"/>
<pathelement path="${classesdir}"/>
</classpath>
<batchtest todir="${testreportdir}">
<fileset dir="test/system">
<include name="**/**Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
在 清单 7 中,完整地配置了 Ant 构建文件,从而将系统测试与 Cargo 部署封装在一起。清单 7 中的代码确保了清单 8 中 test/system 目录下的所有系统测试都是逻辑上可重复的。可以在任何时间里在任何机器上运行这些系统测试,对于连续集成环境尤佳。该测试对容器未做任何假设 —— 未对位置做假设,甚至未对其是否运行做假设!(当然,这些测试仍做了一个假设,我没有强调,即潜在的数据库是配置良好且在运行中的。但那又是另一个要讨论的主题了。)
可重复的结果
在清单 9 中,可以看到工作的成果。当将 system-test 命令发布到 Ant 构建后,就会执行系统测试。Cargo 处理管理所选容器的所有细节,不需要对测试环境作出绝对重复性假设。
清单 9. 增强的构建war:
[war] Building war: C:\dev\projects\acme\target\widget.war
system-test:
_run-system-tests:
[mkdir] Created dir: C:\dev\projects\acme\target\test-reports
[junit] Running test.come.acme.widget.Web.RepeatableWordCreationTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 4.53 sec
[junit] Testcase: testWordCreation took 4.436 sec
BUILD SUCCESSFUL
Total time: 1 minute 2 seconds
请记住,Cargo 也在 Maven 构建中起作用。另外,从正常的应用程序到测试用例,Cargo Java API 都有助于容器的程序化管理。且 Cargo 不仅适用于 JUnit(尽管样例代码是用 JUnit 写的),TestNG 用户将会很高兴地了解到 Cargo 对其测试套件也起作用。事实上,测试用什么编写并不重要,重要的是将它们同 Cargo 封装起来,容器管理问题就会迎刃而解!
结束语
您的测试是否在逻辑上可重复由您来决定,但是通过本文您确实看到 Cargo 的确很有用处。Cargo 管理容器环境,所以您就可以不用管理。将 Cargo 包含到您的测试例程中 —— 这毫无疑问会减轻您构造用于验证 Web 应用程序的可重复测试的负担。
更多精彩
赞助商链接