如何使用PropertyData将字符串数组传递给Theory测试

时间:2011-08-03 17:19:25

标签: xunit.net

我有一个带有以下签名的测试方法:

[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个参数

有什么想法吗?

1 个答案:

答案 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;
    }
}