我正在尝试采用fscheck,但由于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);
}
最佳答案
它实际上并没有真正失败,只是说“ n次测试后参数耗尽”。
当您使用When
时,FsCheck会跟踪由于不满足When
中给出的条件而必须丢弃的生成值数量。默认情况下,这是1000个值。
这表明条件太严格,生成器无法经常生成满足When
条件的值。
这只是一个安全网,因此测试时间不会增加,或者测试会完全卡住。
顺便说一下,这在这里进行了解释:https://fscheck.github.io/FsCheck/Properties.html#Conditional-Properties带有C#示例。
关于c# - FsCheck C#当属性组合器时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41960956/