如何在jenkins中使用xunit(.net核心)测试结果?

Ben*_*aki 4 c# xunit jenkins .net-core

我有一个asp.net核心应用程序,其中有一些用XUnit编写的测试。如何通过詹金斯(Jenkins)等工具使用测试结果?

Ben*_*aki 6

我在这个问题上苦苦挣扎,所以我决定根据我的经验分享我的答案。

为了使用测试结果,我们需要将它们输出到XML文件中,以供解析器稍后使用。xml必须采用解析器知道如何读取的格式。

默认情况下,运行dotnet test时,它将测试结果输出到控制台。为了将这些结果保存到文件中,我们应该使用“ --logger”参数。记录器参数可以接受记录器,而不是将测试结果解析为所需的格式。为了将它们解析为可以供jenkins之类的工具使用的xunit xml测试文件,我们需要使用一个名为XunitXml.TestLogger的外部记录器。现在我们可以运行以下命令:

dotnet test --test-adapter-path:. --logger:xunit
Run Code Online (Sandbox Code Playgroud)

它将结果导出到您拥有的每个项目中的TestResults文件夹中。现在我们可以通过任何工具(例如jenkins)使用这些文件来解析这些文件。jenkins有一个名为Xunit的插件(多么原始),专门用于此目的。它甚至可以让您设置一些错误阈值等。

更新:冒充詹金斯,我发现有一些插件可以让您将点TRX结果(dotnet知道可以本地导出)转换为XUnit格式。可能会简化它并为您节省额外的依赖性。MSTest的,如果这些之一- https://wiki.jenkins.io/display/JENKINS/MSTest+Plugin

  • @pogorman 听起来像 XunitXml.TestLogger 没有安装。尝试在没有 xunit 记录器的情况下导出结果(只需运行没有 --logger:xunit 部分的命令),如果成功,则 XunitXml.TestLogger 可能存在问题 (3认同)
  • 我收到错误消息“找不到带有 AssemblyQualifiedName、URI 或 FriendlyName 'xunit' 的测试记录器”有什么想法吗? (2认同)
  • 就是这样 - 我需要在每个测试项目上安装 XunitXml.TestLogger,谢谢 (2认同)