xUnit과 같은 단위 테스트 프레임워크는 데이터 기반 테스트를 위한 편리한 기능을 제공합니다. 그러나 테스트 중인 메서드에 대한 매개 변수가 사용자 정의 클래스 목록과 같은 복잡한 데이터 구조인 경우 InlineData 속성이 부족합니다.
이 문제를 해결하려면, xUnit은 이론 기반 단위 테스트에 복잡한 매개변수를 전달하기 위한 여러 옵션을 제공합니다. 그러한 옵션 중 하나가 MemberData 속성입니다.
MemberData 속성을 사용하면 IEnumerable
[Theory, MemberData(nameof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } public static IEnumerable<object[]> MyCustomData() { // ... }
xUnit 2.0 이전에는 ClassData라는 또 다른 대안이 있었습니다. MemberData와 유사하게 ClassData는 서로 다른 클래스와 네임스페이스의 테스트 간에 데이터 생성기를 공유할 수 있도록 허용했습니다. 예:
public class MyCustomTests { [Theory, ClassData(typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } } public class MyCustomData : IEnumerable<object[]> { // ... }
xUnit 2.0은 다른 클래스의 정적 멤버를 직접 사용할 수 있는 오버로드된 MemberData 버전을 도입했습니다. 위의 ClassData 예제는 이 오버로드를 사용하여 다시 작성할 수 있습니다.
[Theory, MemberData(nameof(MyCustomData.GetData), MemberType = typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... }
이 예제에서는 MemberData, ClassData, 그리고 각각의 과부하. 이러한 속성을 활용하여 개발자는 복잡한 데이터 구조에서 작동하는 테스트 방법을 위한 데이터를 편리하게 생성할 수 있습니다.
위 내용은 xUnit에서 이론 중심 단위 테스트에 복잡한 매개변수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!