【问题标题】:VSTS test step cannot find xUnit test adapterVSTS 测试步骤找不到 xUnit 测试适配器
【发布时间】:2017-11-02 08:27:53
【问题描述】:

我对 CI/CD 很陌生,mm 目前正在努力让 VSTS 找到我的 xUnit 测试。我的解决方案是一个纯粹的实验,尝试隔离问题并学习。在进入我的设置以及到目前为止所做的工作之前,结果是 VSTS 构建日志中的这一行:

Warning: No test is available in C:\agent\_work\1\s\Quotifier.Models.xUnit.Test\bin\Release\netcoreapp2.0\Quotifier.Models.xUnit.Test.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.

通过谷歌搜索该消息,我将其解释为 VSTS 无法找到 xUnit 测试适配器。这是一个正确的假设吗?另外,我经常看到术语“测试适配器”、“测试运行器”和“测试资源管理器”。 这些术语是一回事吗?查看了this article,它们似乎确实是一回事。 谁能澄清一下?

现在,我的设置...

xUnit 测试项目是一个引用 NUget 包 xunitxunit.runner.visualstudio (2.2.0) 的 .NET Core 2 类库。测试项目还引用了一个名为“Quotifier.Models”的共享类库,其中包含测试代码。

为了更容易诊断,我正在我的 PC 上运行本地(本地)构建代理。这使我能够调查文件结构。

我的构建定义的构建步骤最初是构建整个解决方案的“Visual Studio 构建”。我可以看到生成的二进制文件最终出现在

C:\agent\_work\1\s\Quotifier.Models.xUnit.Test\bin\Release\netcoreapp2.0。 二进制文件中还有xunit.runner.visualstudio.dotnetcore.testadapter.dll这是 xUnit 测试适配器 VSTS 找不到吗?

更多谷歌搜索告诉我,要找到测试适配器的典型位置是在 $(Build.SourcesDirectory)\packages 文件夹中,因此,这就是测试步骤的“自定义测试适配器路径”应该设置的位置。这给了我这个日志条目:

Warning: The path 'C:\agent\_work\1\s\packages' specified in the 'TestAdapterPath' does not contain any test adapters, provide a valid path and try again..

我还检查了该本地文件夹,实际上,xunit NUget 包并没有在那里结束。 谁能猜到为什么?

假设xunit.runner.visualstudio.dotnetcore.testadapter.dll 确实是VSTS 正在寻找的测试适配器,我想我应该尝试帮助它一点。所以我创建了一个单独的 MSBuild 步骤,并通过“MSBuild 参数”指定了输出路径:

/p:OutputPath="$(build.binariesdirectory)/$(BuildConfiguration)/test-assemblies"

然后我将测试步骤的“自定义测试适配器的路径”属性设置为指向同一个文件夹。有了这个,我又回到了日志中的原始警告:

Warning: No test is available in C:\agent\_work\1\b\release\test-assemblies\Quotifier.Models.xUnit.Test.dll. Make sure that installed ... bla ... bla

现在,总结一下……

  • 开箱即用的 xUnit 测试项目不适用于 VSTS
  • xUnit NUget 包最终不在 /**/packages 文件夹中
  • 我假设xunit.runner.visualstudio.dotnetcore.testadapter.dll 是所需的测试适配器。这个假设正确吗?

我现在没有想法,所以任何提示、链接或建议将不胜感激。

【问题讨论】:

  • 你可以用 VSTS 做到这一点。您是使用“VSTEST”任务来运行您的任务还是“dotnet test”?如果测试是 netcore2 项目,您应该使用“dotnet test”运行测试
  • 而且你的 xunit-packages 不应该出现在“packages”目录中。 netcore2 项目以不同方式处理 nuget-packages,并将从本地 nuget-cache 引用它们
  • 我找不到名为“dotnet test”的测试步骤。我还检查了 VSTS“市场”,但仍然没有这样的步骤可用。我在哪里可以找到该步骤?
  • 该任务称为“.NET Core”,并有一个命令下拉菜单,您可以在其中选择构建/恢复/测试等...如果您使用的是“NET Core Tool Installer”,还需要添加托管代理
  • 运行 dotnet 测试步骤成功了!它现在找到了测试,我可以看到它们在日志中传递。继续写一个回复,以便我可以将其标记为答案。 :-) 另外:有没有办法产生测试和代码覆盖率结果?我尝试添加参数 --results-directory $(Build.SourcesDirectory)\TestResults 但没有创建或填充这样的目录。

标签: .net-core azure-pipelines xunit


【解决方案1】:

使用“dotnet test”运行您的 NetCore-UnitTests。 该任务称为“.NET Core”,并有一个命令下拉菜单,您可以在其中选择构建/恢复/测试等...如果您使用托管代理,还需要添加“NET Core Tool Installer”

并且您的 xunit-packages 不应该以“packages”目录结尾。 netcore2 项目以不同方式处理 nuget-packages,并将从本地 nuget-cache 引用它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2013-11-24
    • 2017-01-14
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多