2012-04-26 66 views
8

作为快速检查的粉丝,我有很多的自动收集所有quickChecks

prop_something_something = ... 

在我的整个程序。

为了方便,可以轻松运行所有的人,我定义

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

但有产生runchecks的好方法?

TL; DR:我想轻松地在一个文件中运行所有quickChecks。我想一种方法是将可运行的测试用test_或类似的东西加前缀,但这可能太过于黑客。

回答

7

您可以使用test-framework-th包执行此操作。只要做到:

import Test.Framework.TH 
import Test.Framework.Providers.QuickCheck2 
runchecks = $(defaultMainGenerator) 

这将使用运行测试的test-framework方式,即你会得到比你只需运行等,这常常是一件好事之后的测试之一得到什么稍微更多信息。

您显然需要TemplateHaskell才能使其工作;或者将Default-extensions: TemplateHaskell添加到您的Cabal文件中,或者将{-# LANGUAGE TemplateHaskell #-}添加到文件的顶部。

+0

只需加上,我得到这个错误:http://hpaste.org/67672 - 我必须做其他更改?如果你愿意,我会粘贴更多的代码。 – 2012-04-26 19:06:09

+0

显然,你也必须包含'QuickCheck2'提供者模块,这很有道理。查看我更新的答案以获取更多信息。 – dflemstr 2012-04-26 19:13:35

+0

是的,添加导入Test.Framework.Providers.QuickCheck2工作。谢谢。 :) – 2012-04-26 19:14:23

8

需要额外的注意:此功能在QuickCheck 2中同样存在,请参阅功能quickCheckAll,该功能需要导入Test.QuickCheck.All以及TemplateHaskellquickCheckAll将测试您的模块中名称以prop_开头的所有函数。