8

我们使用 Jenkins 将 .NET Web 应用程序与 NAnt/NUnit 持续集成以进行 .NET 测试。Jenkins 配置了 9 个从属设备(所有这些从属设备都是 Windows Server 2003),它们运行许多构建及其自动化测试。

我们正在尝试设置 js-test-driver 来运行我们的 JavaScript 单元测试,并且下面的 NAnt 任务在开发人员工作站上本地运行良好。Internet Explorer 是我们想要测试的唯一浏览器,因为它是我们所有 Web 应用程序的唯一目标浏览器。

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--port 9876"/>
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

我们在 Jenkins 上遇到相同任务的问题,可能是因为:

  1. 它是一台服务器,我们作为服务帐户运行
  2. 服务器上的浏览器安装存在安全限制

js-test-driver wiki上的GettingStarted页面说我们可以在与运行 js-test-driver 服务器的机器不同的机器上运行浏览器:

在运行任何测试之前,您需要启动测试服务器并捕获至少一个从属浏览器。服务器不必驻留在测试运行器所在的机器上,浏览器本身也可以在不同的机器上。

  1. 有人在 Jenkins/Windows 设置上做过这个吗?
  2. 对于运行 js-test-driver 的可扩展设置,还有其他替代方案吗?
4

1 回答 1

2

我做过类似的事情,但在 100% Windows 设置中没有,但我想你在 Windows 上做类似的事情不会有任何问题。

就我而言,我必须在更多的浏览器上进行测试:IE7、IE8、IE9、Chrome、Safari、Firefox 3.6 和最新版本,所以,我所做的是用我需要的所有浏览器安装虚拟机,以及另一个在服务器模式下运行 jstestdriver 的机器:

java -Xmx256m -jar JsTestDriver-1.3.4-a.jar --port 4224

所有带有浏览器的虚拟机,总是有一个指向该服务器的实例(http://[jstd-server-ip]:4224/capture)

在这些机器上,我创建了一个计划任务,每天早上都会重置浏览器的实例,因为我看到一些浏览器,特别是 IE7,如果运行超过 3 天就会停止工作。

taskkill /f /IM iexplore.exe
iexplore.exe http://[jstd-server-ip]:4224/capture

这些机器和 jstestdriver 服务器一直在运行。我不确定在你的情况下这是否可能。

然后,在应用程序上,我使用 maven 插件来启动测试:http ://code.google.com/p/jstd-maven-plugin/wiki/GettingStarted在我的情况下效果更好,但如果你不是使用 maven,我想在 NAnt 中应该是这样的:

<target name="jsTests" >
    <echo message="Running JavaScript tests..." />
    <exec program="java.exe">
        <arg line="-jar '${jstestdriver.dir}\JsTestDriver.jar'" />
        <arg line="--config '${ui.webtests.dir}\JsTestDriver.conf'" />
        <arg line="--browser 'C:\program files\internet explorer\iexplore.exe'"/>
        <arg line="--verbose"/>
        <arg line="--reset"/>
        <arg line="--tests all"/>
        <arg line="--testOutput '${results.jstestdriver.dir}'"/>
    </exec>
</target>

JsTestDriver.conf的顶部添加这一行:

server: http://[jstd-server-ip]:4224

这告诉jenkins 执行的 jstestdriver客户端实例使用http://[jstd-server-ip]:4224作为服务器。

希望这对你有帮助!

于 2012-05-14T15:33:40.147 回答