問題:
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中文網其他相關文章!