将Cake .NET Core测试输出导出到TeamCity

5
我正在寻找一种方法,通过Cake构建脚本将.NET Core应用程序的测试输出导出到TeamCity。
目前,我只是运行:
DotNetCoreTest("./src/MyTestProject");

但是我在 ITeamCityProvider 或者 DotNetCoreTest 的文档中找不到任何信息。上面的代码块可以从命令行工作,但我找不到一种方法将测试结果发布到构建服务器。希望有人能帮忙。

你使用的测试运行器是什么?如果你正在使用xUnit,它应该可以直接使用out of the box - Enrico Campidoglio
该项目具有Nunit运行器。 - Nagoh
2个回答

5

我又在谷歌搜索这个问题,无意中发现了我自己对其他答案的不太有用的评论...

基本上,在Cake中,您所需要做的就是使用标准设置(与TeamCity无关),调用DotNetCoreTest,并在测试项目中包含以下NuGet软件包:

  • TeamCity.Dotnet.Integration
  • TeamCity.VSTest.TestAdapter

我还在tools\modules\packages.config中配置了Cake构建系统模块:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="Cake.BuildSystems.Module" version="0.3.0" />
</packages>

这将会点亮TC中的测试标签页。

1
不需要添加TeamCity.Dotnet.Integration,只需添加TeamCity.VSTest.TestAdapter:https://blog.jetbrains.com/teamcity/2017/04/test-net-core-with-teamcity/ - MPritchard
TeamCity.VSTest.TestAdapter 是我在 .NET Core 3.1 中唯一有效的东西。 - ryanulit

4
使用 .NET Core 的 NUnit 测试运行器 时,您需要显式传递 --teamcity 选项,以将测试结果报告给 TeamCity(请参见提交 323fb47)。
在您的 Cake 脚本中,您可以通过使用 ArgumentCustomization 属性来实现:
Task("Test")
   .Does(() =>
{
    DotNetCoreTest(
        "path/to/Project.Tests",
        new DotNetCoreTestSettings
        {
            ArgumentCustomization = args => args.Append("--teamcity")
        });
});

啊,我明白了。谢谢! - Nagoh
1
只是提醒一下,如果使用 NUnit Test Adapter (运行器已被弃用),这个方法不再起作用了。 - Adam Houldsworth

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