복잡한 매개변수를 [이론]에 전달
XUnit은 사용자가 간단한 데이터 매개변수로 여러 테스트를 생성할 수 있는 InlineData 속성을 제공합니다. 그러나 사용자 정의 클래스 목록과 같은 더 복잡한 매개변수를 처리할 때는 다른 접근 방식이 필요합니다.
MemberData 및 ClassData 속성
XUnit은 다음과 같은 여러 옵션을 제공합니다. [Theory] 메서드에 복잡한 매개변수를 전달합니다. 한 가지 접근 방식은 MemberData 속성을 활용하는 것입니다. 이 속성은 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 } }; }
In 테스트 클래스에 [Theory] 특성을 적용하고 해당 특성의 MemberType 속성을 사용하여 정적 멤버를 지정할 수 있습니다.
[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) {...}
이러한 특성을 활용하여 [Theory]에 복잡한 매개변수를 전달할 수 있습니다. 방법을 통해 다양한 시나리오를 효율적으로 테스트할 수 있습니다.
위 내용은 XUnit의 [이론] 메서드에 복잡한 매개변수를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!