使用QuickCheck测试随机生成器

时间:2014-12-09 14:20:24

标签: haskell quickcheck

我写了一个随机发电机来制造一个扫雷板。它返回Gen Board,其中Board是我自己定义的数据类型。我想测试它做了它应该做的事情。由于它是一个生成器,我不能使用我习惯的函数来返回Bool或Property。有没有一种使用quickCheck测试生成器的好方法?

1 个答案:

答案 0 :(得分:4)

假设你有

genBoard :: Gen Board
isValidBoard :: Board -> Bool

您可以使用forAll组合器

测试生成器是否有效
prop_genBoardMakesValidBoards :: Property
prop_genBoardMakesValidBoards = forAll genBoard isValidBoard

更难以测试发电机是否足够随机,例如它并不总是返回一个普通的电路板。