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

本文关键字:NUnit 测试 单个 运行 编程 方式 | 更新日期: 2023-09-27 18:08:49

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

我以为设置一个NameFilter就能解决问题,但是RemoteTestRunner似乎只认为我的套件中有一个测试,而套件中有超过50个。它是否真的将一个DLL中的所有测试集中到一个庞大的测试中?是否有一种方法可以将它们分离出来并运行单独的测试用例?

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

我也必须传递一个过滤器,只执行

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程序中的测试属性来获得完全限定的测试名称。