我正在尝试使用Nuke来运行VSTest,因为我的一些测试是在.Net框架(而不是核心)中进行的。
我使用以下命令成功运行了一个测试:
VSTest(@".\test\MyTestProjectFolder\bin\Debug\net47\MyTestProject.dll");...but如果没有必要,我不喜欢指向bin\debug\net47文件夹。
我更愿意指出测试项目的源代码,甚至是解决方案。
正在运行
VSTest(@".\test\**\*.csproj");返回一个包含9个?实例的IReadOnlyCollection。对应于我的9个测试项目,但是如何执行这些项目,或者选择一个或多个来执行呢?
流利的语法更可取,只是弄不清楚。
发布于 2020-08-25 23:20:50
免责声明:我对nuke还很陌生。
我担心VSTest实际上只接受DLL文件的路径。下面是我构建路径的方式:
Target Test => _ => _
.DependsOn(Compile)
.Executes(() => {
var proj = Solution.GetProject("Tests");
var outDir = proj.GetMSBuildProject(Configuration).GetPropertyValue("OutputPath");
var assembly = proj.Directory / outDir / "Tests.dll";
VSTest(assembly);
});它仍然不美观,也不方便,但至少硬编码的路径已经部分消失了。
我也不确定你路径中的net47部分。我不认为它是OutputPath属性的一部分。但是GetMSBuildProject()有第二个可选参数targetFramework,它可以帮助你做到这一点。
由于您有多个测试项目,因此您可能会发现SetTestAssemblies(IEnumerable<string>)很有帮助:
VSTest(s => s.SetTestAssemblies(assemblies));https://stackoverflow.com/questions/63377148
复制相似问题