【发布时间】:2013-08-12 17:41:05
【问题描述】:
如何在 TeamCity 的构建过程中运行 MSTest?有什么陷阱?
【问题讨论】:
如何在 TeamCity 的构建过程中运行 MSTest?有什么陷阱?
【问题讨论】:
此答案专门针对 Windows 上的 TeamCity 7.1,但可能适用于其他环境。
Artifacts\MSTest => MSTest
if not exist Artifacts\MSTest mkdir Artifacts\MSTest
**\bin\**\*.Tests.dll
Artifacts\MSTest\testResults.trx
在指定要在 MSTest 构建步骤中运行哪些测试程序集时,您可以使用通配符,尽管尚不清楚它们的具体工作方式。已提交bug report。
请注意,如果您的某些测试失败并且构建被标记为失败,则 MSTest 构建步骤本身不会失败。如果您在 MSTest 构建步骤之后有构建步骤,并且如果您有测试失败而不想运行,这会导致问题(例如,生成安装程序或您知道有错误的构建文档可能没有意义)。在 TeamCity 的后续版本中,问题可能是 fixed。
如果您希望在测试失败时停止构建过程,您可以创建一个新的构建步骤,使用 TeamCity REST API 来检测当前构建是否已被标记为失败(请记住,当测试失败时,构建步骤未标记为失败,但构建是),然后显式地使当前构建步骤失败。示例:
脚本:
$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"
}
【讨论】: