TeamCity 在测试 .NET Core 项目时不获取 xUnit 测试的结果

TeamCity doesn't pick up result of xUnit tests when testing .NET Core project

我有一个小型 .NET Core 项目,其中完整的 build/test/deploy 过程在 Cake 脚本中处理。

我有一个运行蛋糕脚本的 powershell 脚本。

当 运行 在本地脚本时,我得到每个失败的 xUnit 测试的结果,但是当 运行 通过 TeamCity 的 PowerShell 运行器运行相同的脚本时,我没有得到每个测试的结果,只是失败测试次数的汇总。

蛋糕任务:

Task("Test")
    .IsDependentOn("Clean")
    .Does(() =>
    {
        GetFiles("./tests/**/*.csproj")
            .ToList()
            .ForEach(file => DotNetCoreTest(file.FullPath));
    });

此 Cake 代码在后台运行 "dotnet test"。

当 运行 在构建服务器上的 PowerShell 中手动执行脚本时,我得到以下输出:

Test run for c:\project\myproject\tests\Web.Tests\bin\Debug\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 15.7.0
Starting test execution, please wait...
[xUnit.net 00:00:00.7397647]        Web.Tests.UnitTest1.Test1[FAIL]
Error Message:
 Assert.False() Failure
Expected: False
Actual:   True
Test Run Failed.
Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.
Test Run Failed.

当 运行 使用与 TeamCity 的 PowerShell 运行程序相同的脚本时,我得到的是:

[14:27:45]  [Step 1/1] Test run for D:\TeamCity\buildAgent\workff27c4721bc4a68\tests\Web.Tests\bin\Release\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0)
[14:27:45]  [Step 1/1] Microsoft (R) Test Execution Command Line Tool Version 15.7.0
[14:27:45]  [Step 1/1] Starting test execution, please wait...
[14:27:48]  [Step 1/1] Failed   Web.Tests.UnitTest1.Test1
[14:27:48]  [Step 1/1] Error Message:
[14:27:48]  [Step 1/1]  Assert.False() Failure
[14:27:48]  [Step 1/1] Expected: False
[14:27:48]  [Step 1/1] Actual:   True
[14:27:48]  [Step 1/1] Test Run Failed.
[14:27:48]  [Step 1/1] Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.

如您所见,它缺少包含失败测试名称的一行。

知道为什么会这样吗?

不确定这是否是同一个问题,但我最近从 dotnet v2.0.8 升级到 v2.1.0 时 运行 遇到了类似的问题。就我而言,升级后我不再从 Teamcity 中的单元测试中获得 any 输出。

到目前为止,我找到的唯一解决方法是在 Team City 的单元测试构建步骤中使用 dotnet xunit CLI 工具。

注意:此命令只能 运行 从项目中使用命令 "dotnet xunit -teamcity"。

应该可以通过 Cake 使用 DotNetCoreTool 别名将其配置为 运行。

Test .NET Core projects with TeamCity 文章解释了这种行为。

您必须安装 TeamCity.VSTest.TestAdapter 包才能获取测试的输出。

由于 issue 1706,当日志记录的详细级别最低或安静时,可能无法正确报告 .NET Core xunit 测试项目的测试,因此请尽量避免使用这些详细级别。