Continuous integration 如何在Jenkins上使用远程浏览器执行js测试驱动程序任务?

Continuous integration 如何在Jenkins上使用远程浏览器执行js测试驱动程序任务?,continuous-integration,hudson,jenkins,windows-server-2003,js-test-driver,Continuous Integration,Hudson,Jenkins,Windows Server 2003,Js Test Driver,我们使用Jenkins来持续集成.NET web应用程序和用于.NET测试的NAnt/NUnit。Jenkins配置了9个从机(都是Windows Server 2003),它们运行许多构建及其自动化测试 我们正在尝试设置js测试驱动程序来运行JavaScript单元测试,下面的NAnt任务在开发人员工作站上的本地运行良好。Internet explorer是我们希望测试的唯一浏览器,因为它是我们所有web应用程序的唯一目标浏览器 <target name="jsTests" >

我们使用Jenkins来持续集成.NET web应用程序和用于.NET测试的NAnt/NUnit。Jenkins配置了9个从机(都是Windows Server 2003),它们运行许多构建及其自动化测试

我们正在尝试设置js测试驱动程序来运行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>

说我们可以在不同的机器上运行浏览器,而不是在js测试驱动服务器运行的机器上:

在运行任何测试之前,需要启动测试服务器 并捕获至少一个从属浏览器。服务器不必这样做 驻留在测试运行程序所在的计算机和浏览器上 他们自己也可以在不同的机器上

  • 有人在Jenkins/Windows安装程序上这样做过吗
  • 对于可扩展的安装程序,是否还有其他替代方案可供运行 js测试驱动程序

  • 我做过类似的事情,但在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插件来启动测试:在我的例子中效果更好,但是如果你不使用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>
    
    这告诉jenkins执行的jstestdriver的客户机实例使用http://[jstd服务器ip]:4224作为其服务器


    希望这对你有帮助

    工作起来很有魅力。。。我在NAnt脚本中又做了一个小改动,删除了浏览器参数,因此:
    server: http://[jstd-server-ip]:4224