如何在jenkins中运行ember-cli测试

时间:2015-02-12 14:21:58

标签: testing ember.js jenkins ember-cli

我怎样才能在詹金斯进行Ember-cli测试?

目前,为了运行测试,我添加了一个构建步骤“Execute shell”,其中包含以下内容:

ember test --silent --config-file ${WORKSPACE}/testem.json > ${WORKSPACE}/xunit-ember-dev.xml;

但它不起作用,这是输出

<testsuite name="Testem Tests" tests="0" failures="0" timestamp="Thu Feb 12 2015 14:20:24 GMT+0100 (CET)" time="0">

</testsuite>

如果我在工作区中手动执行与jenkins用户相同的操作,我得到了预期的结果。

<testsuite name="Testem Tests" tests="70" failures="0" timestamp="Thu Feb 12 2015 15:06:40 GMT+0100 (CET)" time="15">
    <testcase name="PhantomJS 1.9 Integration - Homepage: Should display the homepage"/>
    <testcase name="PhantomJS 1.9 Integration - Profile: Should display the profile sections"/>
    ...

每当我让詹金斯参加测试时,他都没有找到测试。

由于

1 个答案:

答案 0 :(得分:2)

只需添加一个运行的执行Shell步骤:

npm run test > results.tap

此命令告诉npm运行名为test的脚本并将输出重定向到名为results.tap的文件。 (重定向到results.tap的目的是让你可以把这个文件交给发布TAP结果后构建步骤,并获得漂亮的测试运行图表。)

在你的package.json中,你应该有一个如下所示的块:

  "scripts": {
    "start": "ember server",
    "build": "ember build",
    "test": "ember test"
  },

(这是ember-cli 1.13.8的默认设置,可能还有几个版本。)

使用这种方法,您不需要在构建系统上全局安装ember-cli:它只需从项目的node_modules文件夹中选择它。

警告:你可能会发现一些博客/论坛帖子告诉你运行npm run test | tee results.tap。这将运行测试,但它将吃掉返回代码。 (如果测试运行失败,则npm进程以返回值1退出,但由于您将输出传递给第二个命令(tee),该命令的返回代码是jenkins看到的。最终结果是jenkins将测试失败解释为成功并继续运行构建步骤。)