【问题标题】:How to use VSTest from Nuke builds如何在 Nuke 构建中使用 VSTest
【发布时间】:2020-12-02 05:44:23
【问题描述】:

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

我有一个成功运行的测试:

VSTest(@".\test\MyTestProjectFolder\bin\Debug\net47\MyTestProject.dll");

...但如果我不需要,我不喜欢指向 bin\debug\net47 文件夹。

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

跑步

VSTest(@".\test\**\*.csproj");

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

流利的语法比较好,就是想不通。

【问题讨论】:

    标签: nuke-build


    【解决方案1】:

    免责声明:我对 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));
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2020-02-14
      • 2022-01-19
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多