【问题标题】:TeamCity + CAKE: Displaying VSTest output in project summaryTeamCity + CAKE:在项目摘要中显示 VSTest 输出
【发布时间】:2017-08-24 17:30:48
【问题描述】:

我知道已经有一个类似的问题here,但我认为我的问题有足够的不同,值得创建一个新帖子。

我使用 CAKE 0.21.1.0。

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

目前,每当测试失败时,我在 TeamCity 主页上看到的都是Exit code 1:

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

在上面的屏幕截图中,我突出显示了我想在 TeamCity 主页上显示的文本输出,作为项目摘要的一部分,而不是 Exit code 1。

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

更新:

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

我修改了我的 build.cake 脚本以包含这些行:

VSTest("./**/bin/Release/CakeTest.dll", new VSTestSettings() { Logger = "trx"} );
TeamCity.ImportData("vstest", "./TestResults/*.trx");

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

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

但是,这仍然是我在 TeamCity 主页上看到的,而不是 VSTest 输出 Total tests: 5. Passed: 3. Failed: 2. Skipped: 0.:

【问题讨论】:

    标签: continuous-integration teamcity cakebuild


    【解决方案1】:

    你有两个选择。

    1. 让vstest.console.exe 将测试结果输出为trx 格式并将其导入TeamCity。 IE。将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"。此选项将在运行单元测试时为您提供实时报告。

    【讨论】:

    • 非常感谢您的回复!我尝试了您的第一种方法,但不幸的是,这对我不起作用。我更新了我的帖子,包括我采取了哪些步骤,以及最终结果是什么。你能看一下并给我一些反馈吗?非常感谢!
    • 抱歉回复晚了。您不能从 glob 模式创建 FilePath,而是需要执行以下操作:var testResult = GetFiles("./TestResults/*.trx").FirstOrDefault(); TeamCity.ImportData("vstest", "./TestResults/" + testResult.GetFilename());
    • 另外,检查您的 TeamCity 日志。它应该说类似##teamcity[importData type='vstest' path='TestResults/foobar.trx'] 和Importing data from 'TestResults/foobar.trx' (291.39 KB) with 'vstest' processor
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2018-03-13
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多