使用Jenkins和Apache Ant运行QUnit测试?

时间:2012-04-23 05:54:00

标签: javascript ant build jenkins qunit

是否可以从Jenkins执行我的QUnit(javascript)单元测试?我的构建脚本是Apache Ant。 Jenkins会将其作为单独的Build Step执行,还是需要在Ant构建脚本的配置中添加一些内容?

4 个答案:

答案 0 :(得分:18)

所以,我终于设法解决了这个问题。

这是我的端到端实施:

  1. 安装PhantomJS(http://phantomjs.org/) - 我在build / tools文件夹中安装了它

  2. 安装PhantomJS QUnit Runner脚本(https://gist.github.com/1588423) - 也将其安装在我的build / tools文件夹中

  3. 在build.xml文件中添加了以下目标:

  4.     <target name="qunit" description="runs QUnit tests using PhantomJS">
          <!-- QUnit Javascript Unit Tests -->
          <echo message="Executing QUnit Javascript Unit Tests..."/>
          <apply executable="path-to-your-phantomjs-bin-folder/phantomjs" >
            <arg value="-path-to-your-build-tools/qunit-runner.js" />
            <arg line="--qunit path-to-your-qunit-folder/qunit.js --tests path-to-your-test-folder --juni path-where-you-want-to-write-the-JUnit-style-output/qunit-results.xml" />
            <fileset dir="${basedir}/${dir.test}" includes="tests.js" />
            <srcfile/>
          </apply>
        </target>
    
    1. 在我的Jenkins项目配置下,我现在用“minify qunit”调用Ant

    2. 我将Jenkins指向JUnit样式的输出XML文件

    3. 而且,这是工作流程:

      1. 检查我的仓库中的更改
      2. Jenkins将对GitHub进行更改
      3. 如果有任何更改,Jenkins将下拉
      4. 将调用Ant,执行构建,然后运行我的单元测试
      5. 测试结果将以类似JUnit的XML格式发布
      6. Jenkins将分析此输出文件。如果没有测试失败,则构建将标记为“成功”。如果任何测试失败,则构建将标记为“不稳定”
      7. Jenkins将部署网络更改
      8. Jenkins将清理工作区域
      9. PS:目前,您必须手动删除JUnit类型的XML输出文件。我稍后会解决这个问题。

        PS:下载自定义的qunit.js(https://gist.github.com/2488794

答案 1 :(得分:4)

我专门为此编写了一个Ant任务

https://github.com/philmander/ant-jstestrunner

答案 2 :(得分:1)

如果我正确理解您的设置,您可以运行Ant构建步骤,为其提供build.xml,顶级目标和-D参数(如果有)的位置。 This可能有所帮助。

答案 3 :(得分:0)

Qunit本身现在维持一个幻影跑步者:

https://github.com/jquery/qunit/tree/master/addons/phantomjs

假设你已经安装了phantomjs,从上面的链接中获取 runner.js (或者使用bower / js包管理器获取它),把它放在jenkins找到它的地方,然后使用方法:

phantomjs path/to/runner.js path/to/your/qunit_tests.html

它提供了最小的输出:

$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html 
Took 29ms to run 11 tests. 11 passed, 0 failed.

如果它失败了,或者像这样:

$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html 
Test failed: sinon tests of navigator.id.watch: watch sees current user
    Failed assertion: check user, expected: current user, but was: baz
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:556
    at file:///home/harry/superlists/accounts/static/tests/tests.html:69
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:203
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:361
    at process (file:///home/superlists/superlists/static/tests/qunit.js:1453)
    at file:///home/harry/superlists/superlists/static/tests/qunit.js:479
Took 29ms to run 11 tests. 10 passed, 1 failed.

没有junit-xml集成,但至少它会在失败时返回错误代码,所以它会在jenkins构建失败...

$ echo $?
1