2

我有一个接受测试数据的测试。使用 nunit 控制台应用程序运行测试时,有没有办法可以指定要使用的数据?

例如:

[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};
    }
}

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

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

它将运行两次。

4

2 回答 2

0

一种方法是通过返回一个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

于 2016-05-31T19:32:40.377 回答
0

赶紧跑...

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

或者

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

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

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

于 2016-05-31T22:37:15.527 回答