【发布时间】:2019-12-27 16:18:50
【问题描述】:
我有一个生成输出的解决方案构建,其中有一个单元测试程序集。
我已尝试使用 VsTest 和 dotnet 测试管道任务在此程序集中运行测试。我能想到的每种参数组合都会产生(路径匿名):
Unable to find MyProject\MyTests.deps.json. Make sure test project has a nuget reference of package "Microsoft.NET.Test.Sdk".
它确实引用了 Microsoft.NET.Test.Sdk。我必须做些什么才能让它发挥作用?
我试过了:
-
dotnet test只接受 .csproj,根本不识别 dll -
dotnet vstest产生上述错误消息。我试过 /Framework:.NETCoreApp,Version=v2.1 命令行参数,匹配程序集的版本,没有任何区别 - 具有和不具有上述参数的 VsTest 任务。再次没有区别。
编辑:我意识到我忽略了在构建工件中包含 *.deps.json 文件。提供这些会产生一个新错误:
Unable to find MyProject\testhost.dll. Please publish your test project and retry.
什么?
编辑#2:我已经在相关的构建管道中发布了 .csproj 并运行后续步骤以将所有内容从生成的文件夹复制到构建工件。这没有任何区别。
这怎么会这么难?
编辑#3:为了更清楚地解释,我想要实现的是在我的发布管道期间运行 SpecFlow 测试,这些测试是用 .net 核心程序集编写的。我不能在构建管道中运行它们,因为它们是执行已部署工件的集成测试,并且这些工件直到发布管道结束时才被部署。我不认为我可以按照here 解释的模式进行操作,因为发布的人工制品是已编译的项目输出,并且代码不再在范围内。
为什么我不能像 Visual Studio 那样从程序集中运行测试?这些测试在 VS2017 和 VS2019 中运行良好。
【问题讨论】:
-
你这里用的是什么代理? Linux?视窗? 2015 年、2017 年、2019 年?托管?私人的?
-
代理规范是'vs2017-win2016'。这能回答问题吗?
-
2019代理试过了吗?
-
@jessehouwing 不适用于大多数其他人工制品。为什么这会有所作为?
-
较新版本的 vstest。随着 2019 年的发布。
标签: azure-devops mstest azure-pipelines vstest