首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nuke构建中的VSTest

如何使用Nuke构建中的VSTest
EN

Stack Overflow用户
提问于 2020-08-12 21:05:36
回答 1查看 234关注 0票数 4

我正在尝试使用Nuke来运行VSTest,因为我的一些测试是在.Net框架(而不是核心)中进行的。

我使用以下命令成功运行了一个测试:

代码语言:javascript
复制
VSTest(@".\test\MyTestProjectFolder\bin\Debug\net47\MyTestProject.dll");

...but如果没有必要,我不喜欢指向bin\debug\net47文件夹。

我更愿意指出测试项目的源代码,甚至是解决方案。

正在运行

代码语言:javascript
复制
VSTest(@".\test\**\*.csproj");

返回一个包含9个?实例的IReadOnlyCollection。对应于我的9个测试项目,但是如何执行这些项目,或者选择一个或多个来执行呢?

流利的语法更可取,只是弄不清楚。

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 23:20:50

免责声明:我对nuke还很陌生。

我担心VSTest实际上只接受DLL文件的路径。下面是我构建路径的方式:

代码语言:javascript
复制
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>)很有帮助:

代码语言:javascript
复制
VSTest(s => s.SetTestAssemblies(assemblies));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63377148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档