运行 "node test" 作为 Visual Studio Team Services 构建任务的一部分,结果在 "tests" 选项卡中
Run "node test" as part of Visual Studio Team Services build task with results in "tests" tab
我有一个项目,其中包含来自命令行的 运行 Mocha 测试。我在我的 packages.json
中设置了一个测试脚本,如下所示:
"test": "mocha ./**/*.spec.js --reporter dot --require jsdom-global/register"
我目前在 Visual Studio Team Services 中设置了一个简单的任务,它只是 运行s npm test
命令,这个 运行s 控制台中的 Mocha continues/fails 构建取决于测试是否通过。
我希望能够做的是让我的测试结果在 运行 之后填充构建定义中的 "tests" 选项卡。如果我在 C# 代码上进行 运行ning 测试,我可以用同样的方式填充此选项卡。
我试过为此使用 Chutzpah,但它过于复杂并且似乎需要我跳过各种麻烦,这意味着更改我的测试和编写长配置文件。我已经写了很多测试,所以真的不想那样做。当它最终发现我的任何测试时,它抱怨 require
和其他与 Node 模块相关的事情。
我所要求的真的可行吗?有没有一种简单的方法可以实现这一点,它与 运行我在 Node 中的测试兼容?
我找到了一种不需要第三方适配器(例如 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"
然后我使用 "Publish Test Results" 任务在构建定义中创建了一个新步骤。我将结果格式设置为 "JUnit" 并为报告者创建的输出 test-results.xml
文件添加了正确的路径。
值得注意的是,虽然 Mocha 附带了一个 "XUnit" 报告器,但这种格式似乎无法与 VSTS 一起正常工作,即使它被列为一个选项。
npm test
的结果现在与来自 MSTest 等的任何其他测试一起显示在 "tests" 选项卡中。
我正在使用 karma 并按照@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
可能还值得添加我在我的 git 分支上使用 branch policies
以防止 PR 在测试失败时被合并,信息来自 link:
https://www.visualstudio.com/en-us/docs/git/branch-policies
这是 TFS 中的输出:
下一步是让覆盖范围也起作用!
我有一个项目,其中包含来自命令行的 运行 Mocha 测试。我在我的 packages.json
中设置了一个测试脚本,如下所示:
"test": "mocha ./**/*.spec.js --reporter dot --require jsdom-global/register"
我目前在 Visual Studio Team Services 中设置了一个简单的任务,它只是 运行s npm test
命令,这个 运行s 控制台中的 Mocha continues/fails 构建取决于测试是否通过。
我希望能够做的是让我的测试结果在 运行 之后填充构建定义中的 "tests" 选项卡。如果我在 C# 代码上进行 运行ning 测试,我可以用同样的方式填充此选项卡。
我试过为此使用 Chutzpah,但它过于复杂并且似乎需要我跳过各种麻烦,这意味着更改我的测试和编写长配置文件。我已经写了很多测试,所以真的不想那样做。当它最终发现我的任何测试时,它抱怨 require
和其他与 Node 模块相关的事情。
我所要求的真的可行吗?有没有一种简单的方法可以实现这一点,它与 运行我在 Node 中的测试兼容?
我找到了一种不需要第三方适配器(例如 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"
然后我使用 "Publish Test Results" 任务在构建定义中创建了一个新步骤。我将结果格式设置为 "JUnit" 并为报告者创建的输出 test-results.xml
文件添加了正确的路径。
值得注意的是,虽然 Mocha 附带了一个 "XUnit" 报告器,但这种格式似乎无法与 VSTS 一起正常工作,即使它被列为一个选项。
npm test
的结果现在与来自 MSTest 等的任何其他测试一起显示在 "tests" 选项卡中。
我正在使用 karma 并按照@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
可能还值得添加我在我的 git 分支上使用 branch policies
以防止 PR 在测试失败时被合并,信息来自 link:
https://www.visualstudio.com/en-us/docs/git/branch-policies
这是 TFS 中的输出:
下一步是让覆盖范围也起作用!