我在.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“运行测试”菜单),但这当然不是处理此问题的最佳方法。
总结一下:
有什么办法能让我幸运吗?