複雑なパラメーターを [理論] に渡す
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< を返すメソッドで [MemberData] 属性を使用できます。オブジェクト[]>。次の例はこれを示しています:
オーバーロードされた MemberData の例:
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 中国語 Web サイトの他の関連記事を参照してください。