问题:
XUnit 允许使用 InlineData 属性创建参数化测试。然而,在处理复杂参数(例如自定义类列表)时会出现挑战。
答案:
XUnit 提供各种 Data 属性,包括 MemberData。通过实现返回 IEnumerable
MemberData 示例:
public class MyClass { public string Name { get; set; } } public static void WriteReportsToMemoryStream( IEnumerable<MyClass> listReport, MemoryStream ms, StreamWriter writer) { ... } [Theory, MemberData(nameof(Data))] public void WriteReports(IEnumerable<MyClass> listReport) { using (var ms = new MemoryStream()) { using (var writer = new StreamWriter(ms)) { WriteReportsToMemoryStream(listReport, ms, writer); // ... } } } public static IEnumerable<object[]> Data => new[] { new object[] { new[] { new MyClass { Name = "Item1" } } }, new object[] { new[] { new MyClass { Name = "Item2" } } }, };
Data 属性生成一个可枚举的对象数组,其中每个数组对应于 WriteReports 的一组参数方法。
以上是如何将复杂参数(例如自定义类列表)传递给 XUnit 理论?的详细内容。更多信息请关注PHP中文网其他相关文章!