微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用蛋糕构建系统查找项目类型?

如何解决如何使用蛋糕构建系统查找项目类型?

ITNOA

我使用 cake build system 自动构建我的解决方案,并且我想在我们的 CI 中自动测试我的项目,

我的NUnit项目有很多类型,比如asp.net dot net framework 4.6.1 or dot net core 2.1 or ...

我的问题是当我想用 NUnit3 cake dsl 运行我们的单元测试时,我们需要知道每个项目的 dll 路径,所以我需要知道每个项目的类型,因为例如对于 dot net core 2.1 dll 位于 netcoreapp 目录下,而对于另一个项目,dll 位于其他位置。

为了更好的演示,请看下图

Structure of my solution

正如您在测试解决方文件夹中看到的,我们有许多具有不同类型框架的测试项目和......(例如其中一个dotnetcore2.1一个dot net framework 4.6.1 等)

>

所以我的问题是如何找到项目类型?

有没有办法解决NUnit3自己找到的dll?

my GitHub discussion about this question

谢谢

解决方法

您应该为单元测试项目使用项目引用,而不是显式的 DLL 引用。

当您使用 .Net Core 时,请使用 XUnit 测试来为您的测试方法提供几乎相同的过程。

通过使用项目参考并将您的测试项目作为同一个解决方案 (sln) 文件的一部分,您将大大简化您的工作。

,

看起来您想要做的是获取单元测试的所有程序集列表,涵盖项目可能具有的任何目标。

如果是这种情况,您可以使用 GetFiles 别名来查找程序集,然后检查每个程序集的 FullPath 以检查 TFM...

var files = GetFiles("./**/*.Tests.dll");
foreach(var file in files)
{
    Information("File: {0}",file.FullPath);

    if (file.FullPath.Contains("/net461/")
    {
        // ... Assembly is for .NET 4.6.1
    }
    else if (file.FullPath.Contains("/netcoreapp2.1/")
    {
        // ... Assembly is for .NET Core 2.1
    }
    // etc...
}
,

您可以使用 globber 模式查找所有测试项目,不知道您的文件夹结构是否正确,但您可以执行以下操作

 Task("Test")
     .Does(() =>
 {
     var settings = new DotNetCoreTestSettings
     {
         Configuration = "Release"
     };

     var projectFiles = GetFiles("./**/Test/UnitTests/*.csproj");
     foreach(var file in projectFiles)
     {
         DotNetCoreTest(file.FullPath,settings);
     }
 });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?