...而不是为每个属性生成100个新的随机样本?QuickCheck如何测试每个样本的所有属性
我的测试套件包含此处解释的TemplateHaskell hack [1]至 测试名为prop_ *的所有函数。在运行测试程序打印
=== prop_foo from tests/lala.lhs:20 ===
+++ OK, passed 100 tests.
=== prop_bar from tests/lala.lhs:28 ===
+++ OK, passed 100 tests.
,它看起来像通过100个随机样本去为每个 属性。
问题:生成样本相当昂贵,检查 属性不是。所以我想有办法将每个随机 样本传递给每个prop_ *函数,而不是创建新的 (#properties * 100)多个样本。
有没有像这样的内置?其实,我觉得我需要在
main :: IO()
main
= do args <- parseArgs <$> getArgs
s <- $(forAllProperties) $ quickCheckWithResult args
s ? return() $ exitFailure
where
parseArgs as
= null as ? stdArgs $ stdArgs{ maxSuccess = read $ head as }
[1] Simple haskell unit testing和 QuickCheck exit status on failures, and cabal integration
'propAllOfThem x = all($ x)[prop1,prop2,prop3]'? –
@DanielWagner:如果你的意思是'($ x)',那我就不明白了(回想一下:模板哈斯克尔!)。如果你的意思是'($ x)',那么不是,这有几个缺点:属性不会自动收集,如果失败,我不会看到哪一个,QuickCheck只报告'prop_AllOfThem'。 – stefan