복잡한 매개변수를 [이론]에 전달
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 예:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!