FsCheck에는 테스트 데이터를 생성하기위한 몇 가지 기본 유형이 있습니다 (Arbitrary
). 그러나 나의 시험 날짜 중 하나가 다른 것에 달려 있다면 어떨까요?FsCheck : 다른 테스트 데이터에 의존하는 테스트 데이터를 생성하는 방법은 무엇입니까?
는 예를 들어, 결과 문자열이 이상 입력 문자열보다 수 없다 string.Substring()
의 특성을 고려 :
[Fact]
public void SubstringIsNeverLongerThanInputString()
{
Prop.ForAll(
Arb.Default.NonEmptyString(),
Arb.Default.PositiveInt(),
(input, length) => input.Get.Substring(0, length.Get).Length <= input.Get.Length
).QuickCheckThrowOnFailure();
}
Substring
의 구현은 확실히 올바른하지만를,이 속성으로 인해 결국 PositiveInt
것이다 실패 이 예외는 genereated NonEmptyString
보다 길어 예외가 발생합니다.
Shrink : NonEmptyString "a"예외가있는 PositiveInt 2 : System.ArgumentOutOfRangeException : 인덱스와 길이는 문자열 내의 위치를 참조해야합니다.
나는 if (input.Length < length) return true;
과 비교할 수 있었지만 그 방법은 테스트를 많이 마쳤습니다. 속성은 확인조차하지 않았습니다.
입력 문자열을 초과하지 않는 PositiveInt
만 생성하도록하려면 어떻게해야합니까? 나는 내가 Gen<T>
클래스를 사용할 필요가 추정하지만 인터페이스는 나에게 혼란 만 화끈하다의 ... 나는 시도 다음하지만 여전히 PositiveInt
의 문자열 초과 가지고 :
var inputs = Arb.Default.NonEmptyString();
// I have no idea what I'm doing here...
var lengths = inputs.Generator.Select(s => s.Get.Length).ToArbitrary();
Prop.ForAll(
inputs,
lengths,
(input, length) => input.Get.Substring(0, length).Length <= input.Get.Length
).QuickCheckThrowOnFailure();
는 https://fscheck.github.io/FsCheck/TestData.html – MethodMan
나는 여러 번 이미이 사이트를 통해 보면서 아직도 내가 원하는 것을 할 수있는 방법을 알아낼 수 없었다. –