我有一个带有以下签名的测试方法:
[Theory]
[PropertyData("MyTestData")]
public void ProcessLines_validLines_doStuff(string[] lines)
{
// do stuff
}
我的财产如下:
public static IEnumerable<string[]> MyTestData
{
get
{
List<string[]> data = new List<string[]>
{
new[] { "1", "1"},
new[] { "2", "2"}
};
var iter = data.GetEnumerator();
while (iter.MoveNext())
yeld return iter.Current;
}
}
Xunit抛出一个System.InvalidOperation:预期的1个参数,得到2个参数
有什么想法吗?
答案 0 :(得分:6)
属性类型应为IEnumerable<object[]>
。
对象数组对应于参数列表。即使你的测试方法只有一个参数,你需要返回一个数组,即使它只有一个元素。
在您的情况下,您可以将类型指定为IEnumerable<string[][]>
,但这可能是造成混淆的原因。
public static IEnumerable<object[]> MyTestData
{
get
{
var data = new []
{
new[] { new []{ "1", "1"}},
new[] { new []{ "2", "2"}}
};
return data;
}
}