TeamCity + CAKE: 在项目摘要中显示VSTest输出

3
我知道已经有一个类似的问题here,但我认为我的问题足够不同,需要创建一个新的帖子。
我使用CAKE 0.21.1.0。
作为TeamCity上的构建步骤,我正在执行build.ps1,它又调用build.cake。在build.cake脚本中,我添加了一个名为RunTests的任务,该任务使用VS Test Runner来执行我的单元测试。
目前,每当有失败的测试时,我只能在TeamCity主页面上看到Exit code 1

enter image description here

当我导航查看构建日志本身时,我可以看到有关失败测试的更多详细信息:

enter image description here

在上面的截图中,我已经突出显示了文本输出,我希望将其作为项目概述的一部分显示在TeamCity主页面上,而不是Exit code 1
我该如何捕获VS测试运行器的输出,以便我可以将其包含在我的构建脚本与TeamCity的交互interaction with TeamCity中?
更新:
感谢@mholo65的回复his reply!我尝试了他概述的第一种方法,但不幸的是它对我没有起作用。
我修改了我的build.cake脚本以包含这些行:
VSTest("./**/bin/Release/CakeTest.dll", new VSTestSettings() { Logger = "trx"} );
TeamCity.ImportData("vstest", "./TestResults/*.trx");

在我的TeamCity构建代理上运行测试时,这是我的工作/检出目录:

enter image description here

这是我的结果文件的完整路径:

enter image description here

然而,这仍然是我在TeamCity主页面看到的,而不是VSTest输出 总测试数:5。通过:3。失败:2。跳过:0。

enter image description here

1个回答

4
你有两个选择。
1. 让 vstest.console.exe 将测试结果输出为 trx 格式,并将其导入 TeamCity。即设置 VSTestSettings.Logger"trx",然后使用 TeamCity.ImportData("vstest", "TestResults\the_name_of_the_result_file.trx") 进行导入。注意,trx 文件的路径必须相对于检出目录,请参阅此处了解更多信息。这里的缺点是不能像 MSTest.exe 那样告诉 vstest.console.exetrx 文件放在哪里(请参阅此处以获取更多信息)。
2. 从此处下载并安装自定义的 VSTestLogger,并将 VSTestSettings.Logger 设置为 "TeamCity"。这个选项将在运行单元测试时提供实时报告。

非常感谢您的回复!我尝试了您提供的第一种方法,但不幸的是对我没有起作用。我已经更新了我的帖子,包括我所采取的步骤和最终结果。您能否请看一下并给我一些反馈?非常感谢! - M.Y. Babt
1
抱歉回复晚了。您无法从通配符模式创建FilePath,而是需要执行类似以下操作:var testResult = GetFiles("./TestResults/*.trx").FirstOrDefault(); TeamCity.ImportData("vstest", "./TestResults/" + testResult.GetFilename()); - bjorkstromm
此外,请检查您的TeamCity日志。它应该会显示类似于##teamcity[importData type='vstest' path='TestResults/foobar.trx']Importing data from 'TestResults/foobar.trx' (291.39 KB) with 'vstest' processor这样的内容。 - bjorkstromm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接