我需要以编程方式运行单个 C# NUnit 测试。我发现另一篇文章非常有助于向我展示如何以编程方式运行一整套测试,但我需要能够选择单独的测试。
我认为设置 NameFilter 可以解决问题,但 RemoteTestRunner 似乎只认为我的套件中有超过 50 个测试。是否真的将单个 DLL 中的所有测试集中到一个庞大的测试中?有没有办法可以将它们分开并运行单独的测试用例?
我也必须通过一个过滤器,只是执行
TestResult testResult = remoteTestRunner.Run(new NullListener(), null , false, LoggingThreshold.Error);
以 NullReferenceException 结束。我快速创建了一个空过滤器
class EmptyFilter : TestFilter
{
public override bool Match(ITest test)
{
return true;
}
}
并将其传递给remoteTestRunner
.
TestResult testResult = remoteTestRunner.Run(new NullListener(), new EmptyFilter() , false, LoggingThreshold.Error);
那行得通。可以投入一点的是搜索 NUnit 是否已经有一个类似的可以重用的过滤器,而不是创建一个自定义的过滤器。
我必须使用 SimpleNameFilter 并将我想要运行的单元测试的名称传递给它的构造函数。这是我所拥有的:
SimpleNameFilter filter = new SimpleNameFilter("Google.Maps.Test.Integrations.GeocodingServiceTests.Empty_address");
TestResult testResult = remoteTestRunner.Run(new NullListener(), filter, false, LoggingThreshold.Error);
您可以通过从测试本身或通过查看 NUnit 程序中的测试属性来获得完全限定的测试名称。