运行"节点测试"作为Visual Studio Team Services构建任务的一部分,其结果为" tests"标签

时间:2016-09-12 13:02:24

标签: node.js unit-testing azure-pipelines azure-pipelines-build-task

我有一个项目,其中包含我从命令行使用Mocha运行的测试。我在packages.json中设置了一个测试脚本,如下所示:

"test": "mocha ./**/*.spec.js --reporter dot --require jsdom-global/register"

我目前在Visual Studio Team Services中设置了一个简单的任务,它只运行npm test命令,在控制台中运行Mocha并根据测试是否通过继续/失败构建。

我希望能够做的是让我的测试结果填充"测试"运行后的构建定义中的选项卡。如果我在C#代码上运行测试,就可以填充此选项卡。

我尝试过使用Chutzpah,但它过于复杂,似乎要求我跳过各种各样的箍,这意味着改变我的测试并编写长配置文件。我已经写了很多测试,所以真的不想这样做。当它最终发现我的任何测试时,它抱怨require以及与Node模块相关的其他事情。

我真正要求的是什么?有没有一种简单的方法可以实现这与在Node中运行我的测试兼容?

2 个答案:

答案 0 :(得分:7)

我找到了一种不需要第三方适配器的好方法(例如Chutzpah)。它涉及让Mocha以XML格式输出报告,并设置Visual Studio Team Services以在构建定义的额外步骤中发布结果。

我安装了mocha-junit-reporterhttps://www.npmjs.com/package/mocha-junit-reporter)并将我的测试脚本更改为以下内容:

"test": "mocha ./temp/**/*.spec.js --reporter mocha-junit-reporter --require jsdom-global/register"

然后,我使用“发布测试结果”任务在我的构建定义中创建了一个新步骤。我将结果格式设置为“JUnit”,并为记者创建的输出test-results.xml文件添加了正确的路径。

值得注意的是,虽然Mocha附带了一个“XUnit”记者,但这种格式似乎与VSTS无法正常工作,即使它被列为一个选项。

npm test的结果现在显示在“测试”标签中,与MSTest等的任何其他测试一起显示。

答案 1 :(得分:3)

我正在使用业力并以与@ dylan-parry建议的方式相同的方式工作。下面有一些例外情况,以防其他人:

<强>的package.json

  "scripts": {
    "test": "cross-env NODE_ENV=test karma start"
  }

<强> karma.conf.js

const webpackCfg = require('./webpack.config')('test');

module.exports = function karmaConfig(config) {

  config.set({
    reporters: ['mocha', 'coverage', 'junit'],
    junitReporter: {
      outputDir: 'coverage',
      outputFile: 'junit-result.xml',
      useBrowserName: false
    }
  })
...

<强> TFS enter image description here

我可能还值得在我的git分支上添加branch policies以防止PR在测试失败时合并,通过此链接获取信息:

https://www.visualstudio.com/en-us/docs/git/branch-policies

这里是TFS中的输出: enter image description here

下一步是让覆盖范围正常工作!