xxxxData
XUnit 에는 많은 속성 이 있습니다 . 예를 들어 PropertyData
속성을 확인하십시오 .
를 반환하는 속성을 구현할 수 있습니다 IEnumerable<object[]>
. object[]
이 메서드가 생성하는 각 메서드는 메서드에 대한 단일 호출에 대한 매개 변수로 "압축 해제"됩니다 [Theory]
.
또 다른 옵션은 ClassData
동일하게 작동하지만 다른 클래스 / 네임 스페이스의 테스트간에 '생성자'를 쉽게 공유 할 수 있으며 실제 테스트 방법과 '데이터 생성기'를 분리합니다.
여기에서 다음 예를 참조 하십시오 .
PropertyData 예
public class StringTests2
{
[Theory, PropertyData(nameof(SplitCountData))]
public void SplitCount(string input, int expectedCount)
{
var actualCount = input.Split(' ').Count();
Assert.Equal(expectedCount, actualCount);
}
public static IEnumerable<object[]> SplitCountData
{
get
{
// Or this could read from a file. :)
return new[]
{
new object[] { "xUnit", 1 },
new object[] { "is fun", 2 },
new object[] { "to test with", 3 }
};
}
}
}
ClassData 예
public class StringTests3
{
[Theory, ClassData(typeof(IndexOfData))]
public void IndexOf(string input, char letter, int expected)
{
var actual = input.IndexOf(letter);
Assert.Equal(expected, actual);
}
}
public class IndexOfData : IEnumerable<object[]>
{
private readonly List<object[]> _data = new List<object[]>
{
new object[] { "hello world", 'w', 6 },
new object[] { "goodnight moon", 'w', -1 }
};
public IEnumerator<object[]> GetEnumerator()
{ return _data.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator()
{ return GetEnumerator(); }
}