FsCheck c# When 属性 组合子
FsCheck c# When property combinator
我正在尝试采用 fscheck,但由于没有太多 C# 文档,所以遇到了很多困难。您能解释一下,为什么以下使用 When 组合器的示例会失败(显然,我不明白如何正确使用它)?
[Test]
public void WherePorperty()
{
Prop.ForAll(NotNullString().ToArbitrary(), s=>s.StartsWith("A").When(s.StartsWith("A"))).VerboseCheckThrowOnFailure();
}
public Gen<string> NotNullString()
{
return Arb.Generate<string>().Where(s => s != null);
}
它实际上并没有真正失败,它只是说 "Arguments exhausted after n tests"。
当您使用 When
时,FsCheck 会跟踪有多少生成值因不满足 When
中给出的条件而不得不丢弃。默认情况下,这是 1000 个值。
这表明条件过于严格,生成器不会经常生成满足 When
条件的值。
它只是一种安全网,所以测试时间不会膨胀,或者测试完全停滞不前。
顺便说一句,这在此处进行了解释:https://fscheck.github.io/FsCheck/Properties.html#Conditional-Properties 使用 C# 示例。
我正在尝试采用 fscheck,但由于没有太多 C# 文档,所以遇到了很多困难。您能解释一下,为什么以下使用 When 组合器的示例会失败(显然,我不明白如何正确使用它)?
[Test]
public void WherePorperty()
{
Prop.ForAll(NotNullString().ToArbitrary(), s=>s.StartsWith("A").When(s.StartsWith("A"))).VerboseCheckThrowOnFailure();
}
public Gen<string> NotNullString()
{
return Arb.Generate<string>().Where(s => s != null);
}
它实际上并没有真正失败,它只是说 "Arguments exhausted after n tests"。
当您使用 When
时,FsCheck 会跟踪有多少生成值因不满足 When
中给出的条件而不得不丢弃。默认情况下,这是 1000 个值。
这表明条件过于严格,生成器不会经常生成满足 When
条件的值。
它只是一种安全网,所以测试时间不会膨胀,或者测试完全停滞不前。
顺便说一句,这在此处进行了解释:https://fscheck.github.io/FsCheck/Properties.html#Conditional-Properties 使用 C# 示例。