如何 运行 并在 VSTS (Vs2017) 上发布 .NETCore Xunit 测试?

How to run and publish .NETCore Xunit tests on VSTS (Vs2017)?

我在 VSTS 中有两个构建步骤:

  1. 到 运行 测试(VSTS cmd 任务):DOTNET 测试 -xml TEST-results.xml
  2. 发布测试结果步骤(VSTS 测试发布任务):format=XUnit 和上一步的文件名

但是在我升级到 VS2017 之后,-XML 标签不再起作用了。我改变了第一步来使用这个: 测试 --logger "trx;LogFileName=TEST-results.xml"

但第二步抛出错误“无效的结果文件。请确保任务中的测试结果格式字段与文件的结果格式匹配

还有其他方法可以 运行 .NetCore 在 VSTS 上进行测试吗?还是我做错了什么?

谢谢,

将 "Test Result Format" 更改为 "VSTest of Publish Test" 结果 step/task,它会正确读取结果文件。

starain-MSFT 的答案将有效,除非您 want/need 使用 xunit 记录器记录 xunit 测试。在这种情况下,您需要做两件事。

  1. https://www.nuget.org/packages/XunitXml.TestLogger/1.0.2-pre-rtm 作为包 ref 添加到您的 test 项目,通过 'Manage NuGet Packages' 在 VS 中,或通过手动将 ref 添加到您的 csproj 文件中,即

<PackageReference Include="xunitxml.testlogger" Version="1.0.2-pre-rtm" />

  1. 修改 VSTS dotnet 测试构建步骤以使用此记录器: dotnet test -a:. -l:xunit
    指定适配器路径的 -a:. 开关仅对于 CLI 工具 V15.0 是必需的,在 15.1 中可以删除(如讨论的 here)。截至今天,VS2017 托管队列使用的是 15.0,因此您现在需要 VSTS 上的 -a:.-l:xunit 使用友好名称,我认为这不是那么友好,因为您必须深入研究特定记录器的源代码才能找到指定它的属性(如 here for xunit and here for trx 所示)

-l 开关的文档至少可以说是参差不齐,但在 vstest 的 github 中,有一个 document 讨论了测试记录器和它们的链接存储库和 nuget 包,在您查看友好名称的源代码后,它们可以帮助您找到所需的任何记录器。如果您需要自定义记录器,这些都是很好的示例,可以帮助您理解如何实现。

最后,你原来使用的发布步骤应该没问题,因为输出文件仍然叫TestResults.xml

使用 dotnet xunit 而不是 dotnet test。参见 Getting Started with .NET Core