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

时间:2017-04-10 21:35:13

标签: .net-core visual-studio-2017 azure-pipelines

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

  1. 运行测试(VSTS cmd任务):DOTNET test -xml TEST-results.xml
  2. 发布测试结果步骤(VSTS测试发布任务):format = XUnit和上一步中的文件名
  3. 但是在我升级到VS2017后,-XML标签不再起作用了。我改变了第一步使用它: test --logger" trx; LogFileName = TEST-results.xml"

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

    还有另一种方法可以在VSTS上运行.NetCore测试吗?或者我做错了什么?

    谢谢,

3 个答案:

答案 0 :(得分:7)

除非您希望/需要使用xunit记录器记录xunit测试,否则starain-MSFT的答案将起作用。在这种情况下,您需要做两件事。

  1. 通过'管理NuGet软件包'将https://www.nuget.org/packages/XunitXml.TestLogger/1.0.2-pre-rtm作为软件包参考添加到您的测试项目中。在VS中,或通过手动添加csproj文件中的ref,即
  2. <PackageReference Include="xunitxml.testlogger" Version="1.0.2-pre-rtm" />

    1. 修改VSTS dotnet测试构建步骤以使用此记录器: dotnet test -a:. -l:xunit
      指定适配器路径的-a:.开关仅对于可以删除的15.1中的CLI工具V15.0是必需的(如here所述)。截至今天,VS2017 Hosted Queue使用的是15.0,因此您现在需要VSTS上的-a:.-l:xunit使用了友好名称,我认为它不是那么友好,因为您必须深入了解特定记录器的源代码以找到指定它的属性(如here所示xunit和here for trx)
    2. -l切换的文档至少可以说是参差不齐,但在vstest的github中,有一个document讨论测试记录器以及指向其存储库和nuget包的链接,在您查看友好名称的来源之后,无论您需要哪种记录器,都可以随身携带。如果您需要自定义记录器,那么这些是帮助您了解如何实施的好例子。

      最后,您最初使用的发布步骤应该没问题,因为输出文件仍称为TestResults.xml

答案 1 :(得分:3)

将“测试结果格式”更改为“发布测试的VSTest”结果步骤/任务,它会正确读取结果文件。

答案 2 :(得分:2)

使用dotnet xunit代替dotnet test。请参阅Getting Started with .NET Core