运行 使用特定数据进行 nunit 测试

Running nunit test with specific data

我有一个接受测试数据的测试。使用 nunit console app 运行 测试时,有没有办法指定要使用的数据?

例如:

[Test, TestCaseSource(typeof(TestData))]
public void ATest(string param1, int param2)

public class TestData : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        yield return new object[] { "blah1 blah1", 1};
        yield return new object[] { "blah2 blah2", 2};
    }
}

我希望能够 运行 ATest 仅使用测试数据 ["blah2 blah2", 2]。如果我运行如下:

nunit3-console.exe Tests.dll --test=ATest --workers=1 --noresult

它将 运行 两次。

实现此目的的一种方法是返回一个 TestCaseData 对象。

类似这样的内容:(未经测试,所以语法可能有点偏差!)

[Test, TestCaseSource(typeof(TestData))]
public void ATest(string param1, int param2)

public IEnumerator GetEnumerator()
{
    yield return new TestCaseData("blah1 blah1", 1).SetName("FirstTest");
    yield return new TestCaseData("blah2 blah2", 2).SetName("SecondTest");
}

要运行先测试一下,然后用命令行:

nunit3-console.exe Tests.dll --test=YourNameSpace.ATest.FirstTest --workers=1 --noresult

看你在做什么,设置类别可能比名称更合适。文档页面显示了可用的内容:https://github.com/nunit/docs/wiki/TestCaseData

就运行...

nunit3-console.exe Tests.dll --test ATest("blah2 blah2", 2)

nunit3-console.exe Tests.dll -- 其中 "test~=blah2"

如果该字符串对于您的所有测试都是唯一的。

请注意,第一个可能需要对引号进行一些转义,具体取决于您的操作系统。