FsCheck测试更改用于测试的值的范围

时间:2014-11-15 19:01:05

标签: f# fscheck

使用FsCheck时,我的代码会自动测试-99到99之间的值。

Check.Quick test

我的测试函数采用整数值。

我想使用1到4999之间的值进行测试。

2 个答案:

答案 0 :(得分:5)

您可以将Gen.elementsProp.forAll结合使用:

let n = Gen.elements [-99..99] |> Arb.fromGen
let prop = Prop.forAll n (fun number -> 
    // Test goes here - e.g.:
    Assert.InRange(number, -99, 99))
prop.QuickCheck()

Gen.elements获取一系列有效值,并从该序列创建一个统一的生成器。 Prop.forAll使用该自定义生成器定义属性。

你可以combine it with FsCheck's Glue Library for xUnit.net,这是我首选的方法:

[<Property>]
let ``Number is between -99 and 99`` () =
    let n = Gen.elements [-99..99] |> Arb.fromGen
    Prop.forAll n (fun number -> 
        // Test goes here - e.g.:
        Assert.InRange(number, -99, 99))

答案 1 :(得分:0)

默认情况下,FsCheck生成1到100之间的整数。您可以通过向Check提供Config对象来更改此值。

let config = {
  Config.Quick with 
    EndSize = 4999
}
Check.One(config,test)

当所有测试都通过时,EndSize指示用于上次测试的大小。大小在StartSize之间线性增加,如果您希望在从1以外的某个值开始的范围内生成测试数据,也可以设置EndSize。请参阅https://github.com/fscheck/FsCheck/blob/master/src/FsCheck/Runner.fs

type Config的实施