将复杂参数传递给[理论]
XUnit 提供了 InlineData 属性,使用户能够使用简单的数据参数生成多个测试。但是,在处理更复杂的参数(例如自定义类列表)时,需要采用不同的方法。
MemberData 和 ClassData 属性
XUnit 提供了多种选项将复杂参数传递给 [Theory] 方法。一种方法是利用 MemberData 属性。该属性指示 XUnit 执行返回 IEnumerable
另一个选项是使用 ClassData 属性。 ClassData 的操作与 MemberData 类似,但允许在不同类或命名空间中的测试之间共享数据生成器。它还将“数据生成器”与实际测试方法分开。
具有静态成员支持的 ClassData 示例
要使用具有静态成员支持的 ClassData,您可以定义一个具有返回 IEnumerable
public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
中在您的测试类中,您可以应用 [Theory] 属性并使用该属性的 MemberType 属性指定静态成员:
[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) {...}
通过利用这些属性,您可以将复杂的参数传递给您的 [Theory]方法,使您能够高效地测试各种场景。
以上是如何将复杂参数传递给 XUnit 的 [理论] 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!