以编程方式运行单个NUnit测试
本文关键字:NUnit 测试 单个 运行 编程 方式 | 更新日期: 2023-09-27 18:08:49
我需要以编程方式运行单个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程序中的测试属性来获得完全限定的测试名称。