gpt4 book ai didi

nuke-build - 如何从 Nuke 构建中使用 VSTest

转载 作者:行者123 更新时间:2023-12-04 13:33:50 27 4
gpt4 key购买 nike

我正在尝试使用 Nuke 来运行 VSTest,因为我的一些测试在 .Net Framework(非核心)中。
我有一个成功运行的测试:

VSTest(@".\test\MyTestProjectFolder\bin\Debug\net47\MyTestProject.dll");
...但如果我不需要,我不喜欢指向 bin\debug\net47 文件夹。
我更愿意指出测试项目的来源,甚至是解决方案。
运行
VSTest(@".\test\**\*.csproj");
返回一个 IReadOnlyCollection 包含 9 个 ?对应我的9个测试项目,但是如何执行这些,或者选择一个或多个执行?
流畅的语法是可取的,只是无法弄清楚。

最佳答案

免责声明:我对核弹很陌生。
恐怕 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 的一部分属性(property)。但是 GetMSBuildProject()采用名为 targetFramework 的第二个可选参数这可以帮助解决这个问题。
由于您有多个测试项目,您可能会发现 SetTestAssemblies(IEnumerable<string>)有帮助:
VSTest(s => s.SetTestAssemblies(assemblies));

关于nuke-build - 如何从 Nuke 构建中使用 VSTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63377148/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com