带有列表或参数的TestCase

Jus*_*ony 6 c# nunit testcase testcasedata

我正在尝试编写一个带有字符串的测试用例,并期望将字符串拆分.我不能初始化ListTestCase,所以我尝试使用TestCaseSource一个params说法,但是我得到的

提供的参数数量错误

我有什么方法可以实现我的最终目标吗?

public IEnumerable<TestCaseData> blah
{
 get
 {
  yield return new TestCaseData("hello World", "h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d");
 }
}

[TestCaseSource("blah")]
public void testmethod(String orig, params String[] myList)
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

尽管两个你testmethodTestCaseData构造起飞params,TestCaseData解释params不同:它试图将它们映射一个-to-one的方法的参数进行测试.在您的情况下,NUnit期望testmethod有12个参数,但您的方法只有两个.这会导致您看到的错误.

要解决此问题,您需要更改构造函数调用,如下所示:

yield return new TestCaseData(
    "hello World"
,   new[] {"h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"}
);
Run Code Online (Sandbox Code Playgroud)

现在你只传递两个参数,第二个是必须传递给你的数组params String[] myList.