將複雜參數傳遞給[理論]
在Xunit 中,InlineData 屬性使您能夠為提供的每組資料建立單獨的測試。但是,如果您的方法採用複雜的參數(例如自訂物件清單)呢?
為了處理這種情況,XUnit 提供了 MemberData 屬性。透過定義傳回 IEnumerable
MemberData 範例:
public class StringTests2 { [Theory, MemberData(nameof(SplitCountData))] public void SplitCount(string input, int expectedCount) { var actualCount = input.Split(' ').Count(); Assert.Equal(expectedCount, actualCount); } public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "xUnit", 1 }, new object[] { "is fun", 2 }, new object[] { "to test with", 3 } }; }
在XUnit 2.0 或更高版本中,您可以在傳回IEnumerable。以下範例示範了這一點:
重載成員資料範例:
public class StringTests3 { [Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) { var actual = input.IndexOf(letter); Assert.Equal(expected, actual); } } public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
利用這些技術,您可以有效地將複雜參數傳遞給理論測試。
以上是如何將複雜參數傳遞給 xUnit 理論測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!