将多个数组传递给xUnit



我了解如何将一个数组传递给xUnit:将字符串数组传递给xUnit测试方法

然而,我想将三个数组传递给我的测试方法:

Type1[] ReturnValuesForMock;
Type2[] ExpectedTestResult;
Type3[] TestData

有办法做到这一点吗?Type1是一个枚举,所以我可以使用编译时常数new [] {enum},但这对需要调用new()Type2不起作用。然后,我可以将Type3处理为params

我觉得这真的应该是可能的,但我不确定怎么。。。

我不确定这是否是最好的方法,但我已经发现我可以在测试中使用[ClassData]属性,如下所示:

[Theory]
[ClassData(typeof(TestDataGenerator))]
public void Test1(Type1[] t1, Type2[] t2, Type3[] t3)
{
//MyTest
}

然后通过TestDataGenerator类提供数据:

private class TestDataGenerator:IEnumerable<object[]>
{
private static readonly List<object[]> _data = new()
{
new object[]{new Type1[] {...}, new Type2[]{...)}, new Type3[]{...}},
...
};
public IEnumerator<object[]> GetEnumerator() => _data.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

相关内容

  • 没有找到相关文章

最新更新