我有一个函数arbExample
来生成一个随机Example
数据类型,它依赖于多个函数。
我正在尝试通过quickCheck prop_example
进行一些属性测试,问题是我不知道如何为使用Arbitrary
的{{1}}定义Example
个实例。
我希望能够在指定arbExample
使用的quickCheck prop_example
数据结构时运行Gens
。
arbExample
答案 0 :(得分:7)
使用具有签名的forAll
组合子:
forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property
一个简单的例子:
import Test.QuickCheck
genA :: Gen Int
genA = choose (-100,100)
genB :: Gen Int
genB = choose (1,100)
prop_example :: Int -> Bool
prop_example n = n > 0
testA = quickCheck $ forAll genA prop_example
testB = quickCheck $ forAll genB prop_example
testA
会失败,但testB
会成功。