自动收集所有quickChecks

时间:2012-04-26 18:11:30

标签: haskell quickcheck

作为quickCheck的粉丝,我有很多

prop_something_something = ...

我的整个计划。

为方便起见,为了方便地运行所有这些,我定义了

runchecks = do
    quickCheck prop_something_something
    quickCheck prop_something_different

但有一种很好的方式来生成runchecks吗?

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

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

这将使用test-framework运行测试的方式,即您将获得比通过简单地一个接一个地运行测试所获得的信息略多的信息,这通常是一件好事。

您显然需要TemplateHaskell才能启用此功能;将Default-extensions: TemplateHaskell添加到您的Cabal文件,或将{-# LANGUAGE TemplateHaskell #-}添加到文件的顶部。