如何使视觉工作室在线失败构建时,Visual Studio的测试步骤并没有发现任何测试
问题描述:
方案如何使视觉工作室在线失败构建时,Visual Studio的测试步骤并没有发现任何测试
- Visual Studio中建立在线的定义。
- 使用Visual Studio测试 - 测试Assemblies步骤在特定的dll中运行测试。
- 在这个DLL中的测试更像是构建步骤(高度定制的建设者),比测试。
- 的测试步骤有“出错时继续”设置为false,因为我需要当建设者之一失败,失败。这是按预期工作的。当测试步骤失败时,构建失败。
由于测试运行者的变化,目前没有发现测试,因为dll中的测试框架与构建中使用的测试运行适配器不匹配。 (我知道如何解决这个问题,但这不是问题。)
问题是,这只会在日志中产生一条关于没有发现测试的信息消息,并且警告说没有发布测试结果,使构建目前(表面上)成功。假想我想摆脱。
我需要做什么才能使“未发现测试”失败的构建?
我特地到VSTS的TestRunner配置有.runsettings
文件(https://msdn.microsoft.com/en-us/library/jj635153.aspx),但没有看到任何选项来获得这种行为?
答
Visual Studio Test
任务只是运行测试,并且如果任何测试失败将会使构建失败。如果由于缺少测试而导致构建失败,Microsoft Premier Services创建的任务称为Build Quality Checks(在我写这篇文章时这是免费的)。此任务允许您在构建版本运行时执行各种规则。如果您将最小代码覆盖率设置为10%,那么如果没有找到测试,它将会使构建失败。
此外,您可以直接自己的任务或脚本来实现相同的目标。
答
您可以添加Visual Studio的测试任务后Powershell的任务。在PowerShell任务中:
- 通过Timeline REST API获取以前的构建任务的详细信息。
- 然后通过名称,如
VsTest - testAssemblies
搜索Visual Studio的测试任务。 - 检查是否为
message
值的参数是no tests discovered
(或No results found to publish
等)问题的一部分。如果有这样的值,请在PowerShell任务中添加命令exit 1
以使构建失败。
为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"
}
}
]
}