C# 带有列表或参数的TestCase

C# 带有列表或参数的TestCase,c#,nunit,testcase,testcasedata,C#,Nunit,Testcase,Testcasedata,我正在尝试编写一个测试用例,它接受一个字符串,并期望该字符串被拆分。我无法在TestCase中初始化列表,因此我尝试将TestCaseSource与params参数一起使用,但是 提供的参数数量错误 我有什么办法来实现我的最终目标吗 public IEnumerable<TestCaseData> blah { get { yield return new TestCaseData("hello World", "h", "e", "l", "l", "o", " ", "W

我正在尝试编写一个测试用例,它接受一个字符串,并期望该字符串被拆分。我无法在
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)
公共IEnumerable废话
{
得到
{
返回新的测试用例数据(“hello World”、“h”、“e”、“l”、“l”、“o”、“W”、“o”、“r”、“l”、“d”);
}
}
[TestCaseSource(“废话”)]
public void testmethod(String orig,params String[]myList)

即使您的
testmethod
TestCaseData
构造函数都采用
params
TestCaseData
params
的解释不同:它试图将它们一一映射到被测试方法的参数。在您的例子中,NUnit需要一个带有12个参数的
testmethod
,但您的方法只有两个参数。这会导致您看到的错误

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

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

现在您只传递了两个参数,第二个参数是必须传递给
params String[]myList

的数组,我发誓我试过了,它对我大喊对象初始值设定项……也许我快疯了。谢谢…现在可以用了!