如何在你的TeamCity构建过程MSTest的整合(How to integrate MSTest

2019-08-02 06:38发布

我如何运行的MSTest在TeamCity的编译过程的一部分吗? 什么是陷阱?

Answer 1:

这个答案是专门为Windows上的TeamCity 7.1,但可以适用于其他环境。

  1. 在你的TeamCity构建配置, 常规设置页面
    1. 伪影的路径Artifacts\MSTest => MSTest
  2. 创建一个新的命令Linebuild步
    1. 自定义脚本if not exist Artifacts\MSTest mkdir Artifacts\MSTest
  3. 创建一个新的MSTestbuild一步
    1. 名单汇编文件**\bin\**\*.Tests.dll
    2. 结果文件Artifacts\MSTest\testResults.trx

陷阱

使用通配符指定哪些测试组件运行时

指定哪些试件在MSTest的构建步骤运行时,可以使用通配符,虽然目前还不清楚他们究竟是如何工作的。 一个错误报告已经提交。

当测试失败的构建过程不会停止

请注意,如果你的一些测试失败,并为失败构建标记,在MSTest的构建步骤本身并没有失败。 这会导致问题,如果你有建立你不想要,如果你有测试失败运行MSTest的构建步骤之后的步骤(例如,它可能没有什么意义,产生你知道有缺陷,构建的安装程序或文档)。 这个问题将有望被固定在TeamCity的更高版本。

如果你希望你的构建过程停止,当你有测试失败,您可以创建一个使用新的生成步骤TeamCity的REST API来检测,如果当前的构建已经被标记为失败(请记住,当测试失败,构建步骤不标记为失败,但构建是),然后明确地失败当前构建步骤。 例:

  1. 创建一个新的PowerShell构建步骤
    1. 脚本源代码
    2. 源代码 :请参见下面的脚本
  2. 确保你的新创建的构建步骤的MSTest的构建步骤后,立即来到
  3. 确保每一个生成步骤后,这其中有一步执行设定为只有当所有先前步骤成功

脚本:

$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"
}


文章来源: How to integrate MSTest in your TeamCity build process