运行“节点testing”作为Visual Studio Team Services构build任务的一部分,并在“testing”选项卡中显示结果

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

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

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

我希望能够做的是让我的testing结果在运行后填充构build定义中的“testing”选项卡。 以同样的方式,我可以得到这个选项卡填充,如果我在C#代码上运行testing。

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

我真正想要的是什么? 有没有一种简单的方法来实现这与在Node中运行我的testing兼容?

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

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

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

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

值得注意的是,虽然摩卡拥有一个“XUnit”记者,但是这个格式在VSTS中似乎无法正常工作,即使它被列为选项。

npm test的结果现在显示在“testing”选项卡中,以及来自MSTest等的任何其他testing。

我正在使用业力,并得到这个作为@ dylan-parrybuild议相同的方式。 下面的一些除了可以帮助别人的情况外:

的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 在这里输入图像描述

这也许值得添加我在我的git分支上使用branch policies ,以防止PR被合并,如果testing失败,请通过以下链接获取信息:

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

以下是TFS中的输出: 在这里输入图像描述

下一步是让覆盖面也工作!