我对CI / CD很新,目前正在努力让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.
通过Google搜索消息,我将其解释为VSTS无法找到xUnit测试适配器。这是正确的假设吗?另外,我看到术语"测试适配器","测试运行器"和"测试资源管理器"很多。 这些条款是否相同? 签出this article后,似乎确实是同一件事。 任何人都可以澄清吗?
现在,我的设置......
xUnit测试项目是一个.NET Core 2类库,引用NUget包xunit
和xunit.runner.visualstudio (2.2.0)
。测试项目还引用了一个名为" Quotifier.Models"的共享类库。其中包含经过测试的代码。
为了更容易诊断,我在PC上运行本地(内部)构建代理。这使我能够调查文件结构。
我的构建定义的构建步骤最初是一个" Visual Studio Build"构建整个解决方案。我可以看到生成的二进制文件最终在
中 C:\agent\_work\1\s\Quotifier.Models.xUnit.Test\bin\Release\netcoreapp2.0
。
二进制文件中还有xunit.runner.visualstudio.dotnetcore.testadapter.dll
。 这是VSTS无法找到的xUnit测试适配器吗?
更多谷歌搜索告诉我,找到测试适配器的典型位置在$(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.runner.visualstudio.dotnetcore.testadapter.dll
是所需的测试适配器。这个假设是否正确?我现在没有想法,所以任何提示,链接或建议都会受到高度赞赏。
答案 0 :(得分:3)
使用" dotnet test"运行你的NetCore-UnitTests。 该任务被称为" .NET Core"并有一个命令下拉列表,您可以在其中选择构建/恢复/测试等...您还需要添加" NET Core Tool Installer"如果您使用的是托管代理
你的xunit-package不应该最终进入" packages" -directory。 netcore2项目以不同方式处理nuget-packages,并将从本地nuget-cache
引用它们