如何在 TeamCity 中运行 MSTest 作为构建过程的一部分?有哪些陷阱?
此答案专门针对 Windows 上的 TeamCity 7.1,但也可能适用于其他环境。
- In your TeamCity build configuration, on the General Settings page
-
工件路径:
Artifacts\MSTest => MSTest
- Create a new Command Linebuild step
-
自定义脚本:
if not exist Artifacts\MSTest mkdir Artifacts\MSTest
- Create a new MSTestbuild step
-
列出程序集文件:
**\bin\**\*.Tests.dll
-
结果文件:
Artifacts\MSTest\testResults.trx
Pitfalls
指定要运行的测试程序集时使用通配符
指定在 MSTest 构建步骤中运行哪些测试程序集时,可以使用通配符,尽管尚不清楚它们到底如何工作。 A错误报告 http://youtrack.jetbrains.com/issue/TW-24220已备案。
当测试失败时构建过程不会停止
请注意,如果某些测试失败并且构建被标记为失败,则 MSTest 构建步骤本身不会失败。如果您在 MSTest 构建步骤之后有构建步骤,而如果测试失败则不想运行该构建步骤(例如,生成您知道有错误的构建的安装程序或文档可能没有意义),这会导致问题。希望问题是fixed http://youtrack.jetbrains.com/issue/TW-17002在 TeamCity 的更高版本中。
如果您希望构建过程在测试失败时停止,您可以创建一个新的构建步骤,该步骤使用TeamCity REST API http://confluence.jetbrains.net/display/TW/REST+API+Plugin检测当前构建是否已被标记为失败(请记住,当测试失败时,构建步骤不会被标记为失败,但构建会被标记为失败),然后显式地使当前构建步骤失败。例子:
- Create a new Powershell build step
-
Script: 源代码
-
源代码: 参见下面的脚本
- 确保新创建的构建步骤紧随 MSTest 构建步骤之后
- 确保此后的每个构建步骤都已完成执行步骤 set to 仅当前面的所有步骤都成功时
Script:
$xml = [xml](curl --request GET http://USERNAME:PASSWORD@HOSTNAME/httpAuth/app/rest/builds/%teamcity.build.id%)
Microsoft.PowerShell.Utility\Select-Xml $xml -XPath "/build" | % { $status = $_.Node.status }
if ($status -eq "FAILURE") {
throw "Failing build step on purpose"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)