FsCheck c#When属性组合符
我正在尝试采用fscheck,但由于没有太多关于C#的文档,所以很难做到这一点。你能解释一下,为什么下面的例子在属性的combinator失败时使用它(显然,我不知道如何正确使用它)FsCheck c#When属性组合符,c#,fscheck,C#,Fscheck,我正在尝试采用fscheck,但由于没有太多关于C#的文档,所以很难做到这一点。你能解释一下,为什么下面的例子在属性的combinator失败时使用它(显然,我不知道如何正确使用它) [测试] 公共财产无效 { Prop.ForAll(NotNullString().ToArbitrary(),s=>s.StartsWith(“A”)。When(s.StartsWith(“A”))。VerboseCheckThrowOnFailure(); } 公共Gen NotNullString() { 返
[测试]
公共财产无效
{
Prop.ForAll(NotNullString().ToArbitrary(),s=>s.StartsWith(“A”)。When(s.StartsWith(“A”))。VerboseCheckThrowOnFailure();
}
公共Gen NotNullString()
{
返回Arb.Generate(),其中(s=>s!=null);
}
它实际上并没有失败,它只是说“在n次测试后参数耗尽”
当您使用When
FsCheck时,它会跟踪由于不满足When
中给定的条件而必须丢弃的生成值的数量。默认情况下,这是1000个值
这表明条件过于严格,当条件足够频繁时,生成器不会生成满足条件的值
它只是一种安全网,所以测试时间不会膨胀,或者测试会完全卡住
顺便说一句,这里解释一下:用一个C#例子。要求举例被认为是离题的。
[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);
}