我已经得到一个模块名,可以开始定义测试用例了,如清单 5 所示:
清单 5. 您必须实现 getModuleName 方法并提供一个有效的名字
import com.google.gwt.junit.client.GWTTestCase;import com.google.gwt.user.client.Timer;public class WordModuleTest extends GWTTestCase { public String getModuleName() { return "com.acme.gwt.WordModule"; }} |
到目前为止一切良好,但是我还没有执行任何测试!由于我的 Ajax 应用程序使用 AsyncCallback
对象,在通过测试用例调用 getDefinition()
方法时, 我必须强迫 JUnit 延迟运行;否则测试将由于没有任何响应而失败。这就要用到 GWT 的 Timer
类。Timer
使我能够重写 getDefinition()
的 run
方法,在 Timer
内完成测试用例逻辑。(测试用例以独立线程运行,有效地阻塞 JUnit 完成整个测试用例)。
以我的测试为例,我将首先调用 getDefinition()
方法,然后提供一个 Timer
的 run()
方法的实现。run()
方法得到输出 Label
实例的文本并验证是否是正确定义。定义了 Timer
实例后,我就需要确定其何时运行,同时强制 JUnit 挂起直至 Timer
实例完成。也许听起来有点复杂,不必担心,因为实践起来非常简易。实际上,清单 6 展示了整个过程: