문자열, 정수, 복식과 같은 간단한 데이터 유형을 [이론] 테스트에 매개변수로 전달하는 것은 속성을 사용하여 간단합니다. 인라인데이터처럼. 그러나 보다 복잡한 매개변수의 경우 그러한 데이터를 어떻게 제공할 것인가에 대한 의문이 제기됩니다.
XUnit은 IEnumerable
예:
public class StringTests { [Theory, MemberData(nameof(SplitCountData))] public void SplitCount(string input, int expectedCount) { Assert.Equal(expectedCount, input.Split(' ').Length); } public static IEnumerable<object[]> SplitCountData => new List<object[]> { { "xUnit", 1 }, { "is fun", 2 }, { "to test with", 3 } }; }
Xunit 2.0 이전에는 다음을 수행할 수 있었습니다. ClassData 속성을 사용하여 서로 다른 클래스의 테스트 간에 데이터 생성기를 공유합니다.
예:
public class StringTests { [Theory, ClassData(typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) { Assert.Equal(expected, input.IndexOf(letter)); } } public class IndexOfData : IEnumerable<object[]> { // ... data and methods }
Xunit 2.0 이상에서 MemberData는 MemberType 매개 변수를 사용하여 다른 클래스의 정적 멤버를 지정할 수 있습니다.
의 경우 예:
public class StringTests { [Theory] [MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void SplitCount(string input, int expectedCount) { Assert.Equal(expectedCount, input.Split(' ').Length); } }
또는 서로 분리하려는 경우 ClassData를 계속 사용할 수 있습니다. 데이터 생성기 및 테스트 방법.
위 내용은 Xunit의 [이론] 테스트에 복잡한 매개변수를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!