1

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

[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: Expected 1 parameter, got 2 parameters

有任何想法吗?

4

1 回答 1

6

属性类型应该是IEnumerable<object[]>. 对象数组对应于参数列表。即使您的测试方法只有一个参数,您也需要返回一个数组,即使它只有一个元素。

在您的情况下,您可以将类型指定为,IEnumerable<string[][]>但这可能是造成混淆的原因。

public static IEnumerable<object[]> MyTestData
{
    get
    {
        var data = new []
        {
            new[] { new []{ "1", "1"}},
            new[] { new []{ "2", "2"}}
        };

        return data;
    }
}
于 2011-12-28T06:37:43.987 回答