我有一个小的.NET Core项目,其中完整的构建/测试/部署过程是在Cake脚本中处理的。
我有一个运行Cake脚本的PowerShell脚本。
当在本地运行脚本时,我会得到每个失败的xUnit测试结果,但是当通过TeamCity的PowerShell运行程序运行相同的脚本时,我不会得到每个测试的结果,只会得到失败测试的数量总结。
Cake任务:
在使用TeamCity的PowerShell运行器运行相同脚本时,我得到了以下结果:
我有一个运行Cake脚本的PowerShell脚本。
当在本地运行脚本时,我会得到每个失败的xUnit测试结果,但是当通过TeamCity的PowerShell运行程序运行相同的脚本时,我不会得到每个测试的结果,只会得到失败测试的数量总结。
Cake任务:
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\work\7ff27c4721bc4a68\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.
正如您所看到的,它缺少包含失败测试名称的一行。
有什么想法为什么会这样?