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

时间:2017-08-23 08:47:08

标签: continuous-integration teamcity cakebuild

我知道已经存在类似问题here,但我认为我的问题存在很大差异,无法保证创建新帖子。

我使用CAKE 0.21.1.0。

作为TeamCity的构建步骤,我正在执行build.ps1,而build.cake又调用build.cake。在RunTests脚本中,我添加了一个名为Exit code 1的任务,它使用VS Test Runner来执行我的单元测试。

目前,只要测试失败,我在TeamCity主页上看到的只是Exit code 1

enter image description here

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

enter image description here

在上面的屏幕截图中,我突出显示了我希望在TeamCity主页上显示的文本输出,作为项目摘要的一部分,而不是build.cake

如何捕获VS Test Runner输出,以便我可以将其作为构建脚本interaction with TeamCity的一部分包含在内?

更新

感谢@ mholo65 his reply!我尝试了他概述的第一种方法,但不幸的是它对我没用。

我修改了我的VSTest("./**/bin/Release/CakeTest.dll", new VSTestSettings() { Logger = "trx"} ); TeamCity.ImportData("vstest", "./TestResults/*.trx"); 脚本以包含以下这些行:

Total tests: 5. Passed: 3. Failed: 2. Skipped: 0.

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

enter image description here

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

enter image description here

但是,这仍然是我在TeamCity主页上看到的,而不是VSTest输出Dictionary<string, double> _prices = new Dictionary<string, double>(); GetPrices() .Buffer(TimeSpan.FromSeconds(1)) .Subscribe(prices => { if (prices != null && prices.Count > 0) { var grouped = prices.GroupBy(x => x.Key); foreach (var group in grouped) _prices[group.Key] = group.Last().Bid; } //print out the last quote of each known price key foreach (var price in _prices) { Console.WriteLine("Key: " + price.Key + ", last price: " + price.Value); } });

enter image description here

1 个答案:

答案 0 :(得分:4)

您有两种选择。

  1. vstest.console.exe将测试结果输出为trx格式并将其导入TeamCity。即将VSTestSettings.Logger设置为"trx",然后使用TeamCity.ImportData("vstest", "TestResults\the_name_of_the_result_file.trx")导入。 trx文件必须的路径相对于结帐目录,请参阅this以获取更多信息。需要注意的是,不能(MSTest.exe)告诉vstest.console.exe放置trx文件的位置(有关详细信息,请参阅this)。
  2. here在您的构建代理上下载并安装自定义VSTestLogger,并将VSTestSettings.Logger设置为"TeamCity"。此选项将在运行单元测试时为您提供实时报告。