Board logo

标题: Dojo 敏捷开发:集成 DOH 单元测试到 Ant build (3) [打印本页]

作者: look_w    时间: 2018-10-18 17:07     标题: Dojo 敏捷开发:集成 DOH 单元测试到 Ant build (3)

集成浏览器运行方式命令行运行方式在很多方面存在着缺陷,例如:无法测试与 DOM 操作相关的代码,无法测试浏览器的兼容性等等。而浏览器运行方式就能够弥补这些缺陷。可是将浏览器运行方式集成到 Ant build 中会相对复杂一些。这种方式需要一个可访问服务器的支持,这个服务器可以是一个部署好的公用服务器,也可以是在 build 中启动的一个本地服务器,下面以本地服务器为例。在 build 中启动一个本地的 Web 服务器可以使用嵌入式的 Web 服务器,例如 Jetty。
在浏览器运行方式中,主入口是一个 html 文件,例如 runner.html。我们可以将该文件放在 WebContent 的根目录中,并将启动的 Web 服务器的 Web 应用根目录设置为 WebContent,这样就可以通过 http://localhost/runner.html 访问。
所以在 Ant build 中启动单元测试就变得简单了,只需要启动一个浏览器并且访问该地址即可,这里的浏览器可以是任何想要测试的浏览器,也可以将每种浏览器测试一遍。以 Firefox 为例,Ant 片段如清单 5 所示。
清单 5. Ant 中启动浏览器
1
2
3
4
5
<target name="runUT">
   <exec executable=" C:\Program Files\Mozilla Firefox\firefox.exe">
       <arg value="http://localhost/runner.html"/>
</exec>
</target>




其中,executable 是浏览器应用程序可执行文件或命令的路径,arg 是访问 runner.html 的 web 路径。这条命令可以达到启动单元测试的目的,但是当浏览器被启动起来以后这条命令就直接返回了,所以 Ant build 可能在单元测试执行结束之前就已经返回了,无法得到单元测试的执行结果。所以我们需要一个办法让 Ant build 等待单元测试执行结束。这时候可以借助 Web 服务器来传递这个消息。
我们可以实现一个服务器端的消息转接服务,该服务可以通过 HTTP 写入或者读取单元测试的执行结果。在 runner.html 中添加一段 JavaScript 代码用于在单元测试执行结束后将结果通过 Ajax 方式写入到服务中。除此之外,我们还需要实现一个 Java 可执行类,该类以一定间隔从服务器端的服务中去取执行结果,当无法取得执行结果时等待一定间隔重试,直到取得执行结果,然后输出执行结果并且根据执行结果是否成功决定返回结果。在 Ant build 中,当单元测试被启动后启动该 Java 可执行类。通过这个方式我们可以让 Ant build 等待单元测试执行结束并且将单元测试的结果输出,当单元测试失败时让 build 失败。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0