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 测试项目的测试,因此请尽量避免使用这些详细级别。
我有一个小型 .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 测试项目的测试,因此请尽量避免使用这些详细级别。