TeamCity在测试.NET Core项目时无法获取xUnit测试结果。

7
我有一个小的.NET Core项目,其中完整的构建/测试/部署过程是在Cake脚本中处理的。
我有一个运行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.

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

有什么想法为什么会这样?


你找到解决方法了吗?我遇到了类似的问题。 - mcintyre321
不好意思,我想不是这个原因。我已经升级了TeamCity并将项目升级到.NET Core 2.1,但问题仍然存在。也许只是一些愚蠢的问题,比如TeamCity隐藏所有以“ [”开头的行。 - Bjarte Aune Olsen
@mcintyre321 如果你还在苦苦挣扎,我的回答或许能帮到你。我刚刚通过安装包来解决了我的项目问题。 - Andrii Litvinov
最后我终于成功地让测试通过了 :/ 虽然感谢你的帮助! - mcintyre321
我最初认为我遇到了同样的问题,但最终发现我忘记添加“XML报告处理”构建功能,我认为这可能会帮助其他人... - Louis Somers
3个回答

8

3

不确定是否是同一个问题,但最近我从dotnet v2.0.8升级到v2.1.0时遇到了类似的问题。在我的情况下,升级后,我在Teamcity中的单元测试中再也没有得到任何输出。

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

注意:此命令只能在使用命令“dotnet xunit -teamcity”的项目内部运行。

应该可以使用DotNetCoreTool别名配置此命令以在Cake中运行。


0

由于问题 1706,当记录详细程度为最小或安静时,.NET Core xunit 测试项目的测试可能无法正确报告,因此请尽量避免使用这些详细程度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接