我有一个项目,其中包含我从命令行使用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中运行我的测试兼容?
答案 0 :(得分:7)
我找到了一种不需要第三方适配器的好方法(例如Chutzpah)。它涉及让Mocha以XML格式输出报告,并设置Visual Studio Team Services以在构建定义的额外步骤中发布结果。
我安装了mocha-junit-reporter
(https://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
}
})
...
我可能还值得在我的git分支上添加branch policies
以防止PR在测试失败时合并,通过此链接获取信息:
https://www.visualstudio.com/en-us/docs/git/branch-policies
下一步是让覆盖范围正常工作!