我正在尝试采用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/

10-10 16:59