我有一个带有以下签名的测试方法:
[Theory]
[PropertyData("MyTestData")]
public void ProcessLines_validLines_doStuff(string[] lines)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我的财产看起来像这样:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Xunit抛出一个System.InvalidOperation:预期的1个参数,得到2个参数
有任何想法吗?
小智 6
属性类型应该是IEnumerable<object[]>.对象数组对应于参数列表.即使您的测试方法只有一个参数,您也需要返回一个数组,即使它只有一个元素.
在您的情况下,您可以指定类型,IEnumerable<string[][]>但这可能是造成混淆的原因.
public static IEnumerable<object[]> MyTestData
{
get
{
var data = new []
{
new[] { new []{ "1", "1"}},
new[] { new []{ "2", "2"}}
};
return data;
}
}
Run Code Online (Sandbox Code Playgroud)