技术开发 频道

对Ajax 应用程序进行单元测试

  前面我曾提到,如果您想实际运行您的 GWT JUnit 测试,您必须执行大量琐碎的工作来配置运行环境。比如说,要想通过 Ant 的 junit 任务运行我的测试,我就必须确保某些文件位于类路径中并向低层 JVM 提供一个参数。特别是,在调用 junit 任务时,我还要确保托管源文件(以及测试)的目录(或多个目录)位于类路径中,还要告诉 GWT 以何种模式运行。我倾向于使用 hosted 模式,这意味着要使用 www-test 标志,如清单 7 所示:

  清单 7. 用 Ant 运行 GWT 测试

1 <junit dir="./" failureproperty="test.failure" printSummary="yes"
2      fork="true" haltonerror="true">
3     
4 <jvmarg value="-Dgwt.args=-out www-test" />
5
6 <sysproperty key="basedir" value="." />
7 <formatter type="xml" />
8 <formatter usefile="false" type="plain" />
9 <classpath>
10   <path refid="gwt-classpath" />
11   <pathelement path="build/classes" />
12   <pathelement path="src" />
13   <pathelement path="test" />
14 </classpath>
15 <batchtest todir="${testreportdir}">
16   <fileset dir="test">
17    <include name="**/**Test.java" />
18   </fileset>
19 </batchtest>
20 </junit>
21

  运行 GWT 测试现在转变成调用问题了。还需注意的是 GWT 测试属于轻量级测试, 所以我可以频繁运行测试,甚至是连续运行,就像我在一个持续集成环境(Continuous Integration)中一样。

  结束语

  在本文所示的 GWT 测试用例中,您已经看到用于验证 Ajax 应用程序所需的基本步骤。您可以继续测试我的示例 GWT 应用程序,比如测试一些边界用例,但是我认为重点在于:如果使用包含测试特性的框架编写 Ajax 应用程序,测试要比想象中容易。

  要对 GWT 应用程序进行良好测试(对绝大多数应用程序也适用),关键在于设计应用程序时要把测试一并考虑。还要注意 GWTTestCase 不是被用来进行交互测试的。您不能使用 GWTTestCase 直接模拟用户。不过您能够以一种间接的方式用它来验证用户交互,正如本文中演示的那样。

0