0

设想

  • Visual Studio Online 生成定义。
  • 使用 Visual Studio 测试 - 测试程序集步骤在特定 dll 中运行测试。
  • 这个 dll 中的测试更像是构建步骤(高度定制的构建器),而不是测试。
  • 测试步骤将“出错时继续”设置为 false,因为当其中一个构建器失败时,我需要它失败。这正在按预期工作。当测试步骤失败时,构建失败。

由于测试运行器的变化,由于 dll 中的测试框架与构建中使用的测试运行适配器不匹配,目前没有发现任何测试。(我知道如何解决这个问题,这不是问题。)

问题在于,这只会在日志中生成一条关于未发现测试的信息消息,并警告说没有要发布的测试结果,从而使构建存在(表面上)成功。我想摆脱的误报。

我需要做什么才能使“未发现测试”使构建失败?

.runsettings我已经使用文件(https://msdn.microsoft.com/en-us/library/jj635153.aspx )查看了 vsts testrunner 配置,但是没有看到任何选项来获得这种行为?

4

2 回答 2

1

Visual Studio Test任务仅运行测试,如果任何测试失败,构建将失败。如果您希望您的构建由于缺乏测试而失败,Microsoft Premier Services 创建了一个名为Build Quality Checks的任务(在我撰写本文时它是免费的)。此任务允许您在构建运行时强制执行各种规则。如果您将最小代码覆盖率设置为 10%,如果没有找到测试,它将导致构建失败。

此外,您可以调整自己的任务或脚本来实现相同的目标。

于 2017-08-07T20:49:56.723 回答
1

您可以在 Visual Studio 测试任务之后添加Powershell任务。在 powershell 任务中:

  • 通过Timeline REST API获取之前构建任务的详细信息。
  • 然后按名称搜索 Visual Studio 测试任务,例如VsTest - testAssemblies.
  • 检查message值的参数是否是no tests discovered(或No results found to publish等)问题部分。如果有这样的值,请exit 1在 powershell 任务中添加命令以使构建失败。

Visual Studio 测试任务的示例输出显示如下消息No results found to publish

{
  "id": "29b3a87c-3c5b-473f-9ab5-85eff906250e",
  "parentId": "299295b6-d397-492c-958e-094ec90630f8",
  "type": "Task",
  "name": "VsTest - testAssemblies",
  "startTime": "2017-08-08T07:37:16.18Z",
  "finishTime": "2017-08-08T07:37:23Z",
  "currentOperation": null,
  "percentComplete": null,
  "state": "completed",
  "result": "succeeded",
  "resultCode": null,
  "changeId": 13,
  "lastModified": "0001-01-01T00:00:00",
  "workerName": "name",
  "order": 6,
  "details": null,
  "errorCount": 0,
  "warningCount": 2,
  "url": null,
  "log": null,
  "task": {
    "id": "ef087383-ee5e-42c7-9a53-ab56c98420f9",
    "name": "VSTest",
    "version": "2.0.70"
  },
  "issues": [
    {
      "type": "warning",
      "category": "General",
      "message": "",
      "data": {
        "type": "warning",
        "code": "002003"
      }
    },
    {
      "type": "warning",
      "category": "General",
      "message": "No results found to publish.",
      "data": {
        "type": "warning"
      }
    }
  ]
}
于 2017-08-08T08:08:32.807 回答