我知道已经存在类似问题here,但我认为我的问题存在很大差异,无法保证创建新帖子。
我使用CAKE 0.21.1.0。
作为TeamCity的构建步骤,我正在执行build.ps1
,而build.cake
又调用build.cake
。在RunTests
脚本中,我添加了一个名为Exit code 1
的任务,它使用VS Test Runner来执行我的单元测试。
目前,只要测试失败,我在TeamCity主页上看到的只是Exit code 1
:
当我导航到查看构建日志本身时,我会看到有关失败测试的更多详细信息:
在上面的屏幕截图中,我突出显示了我希望在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构建代理上运行测试时,这是我的工作/结帐目录:
这是我的结果文件的完整路径:
但是,这仍然是我在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);
}
});
:
答案 0 :(得分:4)
您有两种选择。
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)。VSTestSettings.Logger
设置为"TeamCity"
。此选项将在运行单元测试时为您提供实时报告。