將複雜參數傳遞給[理論]
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中文網其他相關文章!