6

我有一个项目,其中包含我从命令行使用 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 中运行我的测试兼容的简单方法来实现这一点?

4

2 回答 2

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 等的任何其他测试一起显示在“测试”选项卡中。

于 2016-09-12T13:47:09.797 回答
3

我正在使用 karma 并让它以与@dylan-parry 建议的方式相同的方式工作。以下一些例外情况,以防对其他人有所帮助:

包.json

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

业力.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在此处输入图像描述

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

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

这是 TFS 中的输出: 在此处输入图像描述

下一步是让覆盖范围也起作用!

于 2017-05-04T11:01:18.140 回答