以编程方式运行单个NUnit测试

我需要以编程方式运行单独的C#NUnit测试。 我发现另一篇文章非常有助于向我展示如何以编程方式运行整套测试,但我需要能够选择单独的测试。

我认为设置一个NameFilter可以解决这个问题,但RemoteTestRunner似乎只认为在我的套件中有超过五十的时候有一个测试。 它是否真的将单个DLL中的所有测试集中到一个庞大的测试中? 有没有办法可以将它们分开并运行单独的测试用例?

我也必须传递一个filter,只是执行

 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是否已经有一个可以重复使用的类似filter,而不是创建一个自定义filter。

我不得不使用SimpleNameFilter并将其想要运行的unit testing的名称传递给它的构造函数。 这就是我所拥有的:

 SimpleNameFilter filter = new SimpleNameFilter("Google.Maps.Test.Integrations.GeocodingServiceTests.Empty_address"); TestResult testResult = remoteTestRunner.Run(new NullListener(), filter, false, LoggingThreshold.Error); 

您可以通过从测试本身中找出它或者在NUnit程序中查看测试的属性来获得完全限定的测试名称。