在.Net Core项目(包括这些测试的.NetStandard项目)上运行NUnit测试的方式是什么?

时间:2019-02-19 17:55:39

标签: .net-core nunit .net-standard

我在.NetStandard项目(程序集)中定义了我的测试(因为我需要通过非常不同的平台进行测试)。 我们不能直接运行它们,因为它要求项目定位诸如.NetFramework或.Net Core之类的东西。

因此,我已经创建了.Net Core项目并引用了.NetStandard项目。

但是,当运行dotnet test ...csproj时,我显然会收到

  

...中没有可用的测试。请确保已注册测试发现者和执行者,并且平台和框架版本设置正确,然后重试。

...因为显然没有魔术和测试适配器无法读懂我的想法并自动进入任何引用的程序集。

看来,测试发现者只是不查看带有测试的附加程序集。

但是,必须有某种提及方式,对吗? The documentation对此相当谦虚,因此我什至不知道这种方法是否普遍可行。 但是,在使用TestRunners测试Xamarin.iOS / Android时,他们总是可以选择添加我的程序集进行测试,例如:runner.Add(typeof(MyTestClass).Assembly)


请明确一点,这个问题不是实际上是关于针对不同平台的问题,而是从.Net Core项目中找到运行测试的方式(它已经已经适用于Xamarin):

解决方案之一是在.NET Core项目中从.NETStandard项目的类创建继承的类:

[TestFixture]
public class TestsClassInNetCoreProject : TestsClassInNetStandardProject
{
    // ...
}

(这两种方法都可以工作:从命令行或从VS“运行测试”菜单),但这当然不是处理此问题的最佳方法。

总结一下:

  1. 应将测试放置在单独的项目/程序集中,因为Xamarin测试项目实际上并不以通用的方式运行(它们实际上是通过iOS / Android应用程序内部的测试运行器运行)。
  2. 通过这种方法,可以在.NETStandard程序集中进行测试,该程序可以附加到其他任何地方。
  3. 同样,此已经有效通过测试运行程序(NUnit一个)用于Xamarin(将我的.NETStandard库附加到测试的特定于平台的项目),但不适用于.NET Core项目。
  4. 不需要在.NET Standard程序集本身上运行测试(甚至不可能),我需要从testable中引用它们。 NET Core项目。

有什么办法能让我幸运吗?

0 个答案:

没有答案