Ajax- 分析JsUnit 之使用JsUnit服务器

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页 | ASP | PHP | JSP | HTML | CSS | XHTML | aJAX | Ruby | JAVA | XML | Python | ColdFusion

虽然向测试运行工具传递各种参数可以较容易地完成自动化测试,但是你很快就会厌倦这样以常规方式手工地运行测试,特别是要考虑到多个操作系统上的多个浏览器时,更是如此。你可能想跟踪以前运行的结果,以便进行审计或完成质量保证。为解决这些问题,JsUnit服务器会提供测试结果的XML日志,从JUnit或Ant脚本运行测试,以及在远程主机上从JUnit或Ant脚本运行测试。

利用JsUnit服务器,你只需点击一个按钮,就能基于你的操作系统/浏览器运行整个测试集。另外,只需在一个重要步骤中把JavaScript的测试增加到Ant脚本中,就能使之成为构建过程的一部分。JsUnit服务器包括一组Java servlet,它们在可嵌入的Jetty开源Web服务器上运行,这样你就无需在打算测试的每个主机上都配置一个Web服务器/servlet容器。一旦完成配置,这个过程就很简单了,只是按下一个按钮而已!

配置服务器

在利用JsUnit服务器之前,需要先进行配置。为此可以修改build.xml文件,这个文件在jsunit文件夹中。这个文件的最前面有一组属性,可以修改这些属性来满足你的需要。这些变量都很好理解,详细内容请见表6-2。

表6-2 
服务器配置

环境变量                内  容
browserFileNames 你想测试的一组浏览器可执行文件,这是一个完全路径列表,各个路径之间用逗号分隔
url 测试运行工具的URL,包括适当的查询串来自动运行适当的测试集
port 运行JsUnit服务器的端口,如果没有这个变量,会就使用端口8080
resourceBase 定义JsUnit服务器的文档根。如果是空值(一般设置),就会使用jsunit安装目录
logsdirectory 运行测试的结果会写到这个目录。如果是空值,则默认为jsunit/logs
remoteMachineURLs 指定你想在哪些远程主机上运行测试,即这些远程主机的URL列表,各URL之间用逗号分隔。这些远程主机需要已经安装配置了一个JsUnit服务器

一旦配置了测试集(或测试页)和浏览器组合,只需运行standalone_test目标。在NetBeans开发环境中,可以得到如图6-25所示的结果。

Image0251.jpg

图6-25 从NetBeans运行standalone_test目标

运行这个目标,会在你指定的端口上启动Jetty服务器,而一旦服务器开始运行,就会启动你指定的浏览器,而且会运行你配置的测试。当然,不必特别注意结果,如果出现一个失败或错误,它会显示在Ant任务的输出中,指出任务失败。


testPageWithError.html:testValidArgs had an error:
Error message is: "TypeError: document.getElementById("arg1") has no properties"
Stack trace follows:
addNumbers()@file:////Users/nate/projects/chapter6/web/testPageWithError.html:21
testValidArgs()@file:////Users/nate/projects/chapter6/web/testPageWithError.html:16
("testValidArgs")@file:///Users/nate/projects/chapter6/web/jsunit/
app/jsUnitTestManager.js:359
("testValidArgs")@file:///Users/nate/projects/chapter6/web/jsunit/
app/jsUnitTestManager.js:359 ()@file:///Users/nate/projects/chapter6/web/jsunit/
app/jsUnitTestManager.js:166 ("file:////Users/nate/projects/chapter6/web/
testPageWithError.html")
@file:///Users/nate/projects/chapter6/web/jsunit/app/jsUnitTestManager.js:104
()@file:///Users/nate/projects/chapter6/web/jsunit/app/jsUnitTestManager.js:338
@file:///Users/nate/projects/chapter6/web/jsunit/app/jsUnitTestManager.js:335

假设在查询串上增加了submitResults=true,还可以查看日志文件来检查结果。日志文件采用JUnit结果同样的XML格式,所以像自动化JUnit测试集一样,可以用同样的转换很容易地加以处理。可以直接查看XML文件,也可以使用JsUnit内置的“displayer”servlet。

要使用“displayer”servlet,首先确保JsUnit服务器已经运行。如果未运行,只需运行start_server目标。一旦JsUnit服务器开始运行,打开你最喜欢的浏览器,指向localhost:8080/jsunit/displayer?id=×××,这里的×××是你想查看的结果日志的ID。你会看到测试运行的结果,如图6-26所示。

Image0261.jpg

图6-26 查看测试运行的结果

在远程主机上运行测试

如果想在分布式主机上运行测试集,需要使用distributed_test Ant任务。当然,必须在要用的每个远程主机上配置一个JsUnit服务器,并配置适当的测试和浏览器。运行distributed_test Ant任务会调用一个JUnit测试(net.jsunit.DistributedTest),它会进一步在配置中提供的每个远程主机上调用一个servlet。这个servlet运行的基于JUnit的测试与本地运行的测试(net.jsunit.StandaloneTest)是一样的。然后,会在远程主机上配置的浏览器中运行测试,结果发送回发起者。