带有列表或参数的TestCase

时间:2013-06-20 19:42:44

标签: c# nunit testcase testcasedata

我正在尝试编写一个带有字符串的测试用例,并期望将字符串拆分。我无法初始化List中的TestCase,因此我尝试将TestCaseSourceparams参数一起使用,但是我得到了

  

提供的参数数量错误

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

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)

1 个答案:

答案 0 :(得分:5)

即使您的testmethodTestCaseData构造函数都采用paramsTestCaseData也会以不同的方式解释params:它会尝试将它们一对一映射到被测试方法的参数。在您的情况下,NUnit期望testmethod有12个参数,但您的方法只有两个。这会导致您看到的错误。

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

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

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