我正在测试一个随机生成器,生成我自己类型的实例。为此,我有一个自定义实例Arbitrary
:
complexGenerator :: (RandomGen g) => g -> (MyType, g)
instance Arbitrary MyType where
arbitrary = liftM (fst . complexGenerator . mkStdGen) arbitrary
这适用于Test.QuickCheck
(实际上Test.Framework
)测试生成的值是否具有某些属性。但是,我要检查的属性很多,添加的越多,验证它们所需的时间就越多。
有没有办法使用相同的生成值来测试每个属性,而不是每次都重新生成它们?我显然仍然想看看,在失败时,哪个属性不成立,所以制作一个巨大的属性and
并不是最优的。