代码之家  ›  专栏  ›  技术社区  ›  Bjarte Aune Olsen

TeamCity在测试.NET核心项目时不接受XUnit测试的结果

  •  5
  • Bjarte Aune Olsen  · 技术社区  · 7 年前

    我有一个小的.NET核心项目,在该项目中,完整的构建/测试/部署过程在一个cake脚本中处理。

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

    当在本地运行脚本时,我会得到每个失败的XUnit测试的结果,但是当通过TeamCity的PowerShell运行程序运行相同的脚本时,我不会得到每个测试的结果,只会得到失败测试数目的摘要。

    蛋糕任务:

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

    这个代码在引擎盖下运行“dotnet测试”。

    在生成服务器上的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.
    

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

    知道为什么会这样吗?

    3 回复  |  直到 7 年前
        1
  •  5
  •   Andrii Litvinov    6 年前

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

    你必须安装 TeamCity.VSTest.TestAdapter 用于获取测试输出的包。

        2
  •  2
  •   Røye    7 年前

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

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

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

    应该可以使用dotnetcoretool别名将其配置为使用cake运行。

        3
  •  0
  •   NikolayP    6 年前

    由于以下原因,当记录详细级别为最低或安静时,可能无法正确报告.NET Core XUnit测试项目的测试 issue ,所以尽量避免使用这些冗长级别。