我正在尝试编写一个带有字符串的测试用例,并期望将字符串拆分。我无法初始化List
中的TestCase
,因此我尝试将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)
答案 0 :(得分:5)
即使您的testmethod
和TestCaseData
构造函数都采用params
,TestCaseData
也会以不同的方式解释params
:它会尝试将它们一对一映射到被测试方法的参数。在您的情况下,NUnit期望testmethod
有12个参数,但您的方法只有两个。这会导致您看到的错误。
要解决此问题,您需要更改构造函数调用,如下所示:
yield return new TestCaseData(
"hello World"
, new[] {"h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"}
);
现在你只传递两个参数,第二个是必须传递给params String[] myList
的数组。