2012-04-26 7 views
8

を収集し、私は私のプログラムを通じてが自動的quickCheckのファンなので、すべてのquickChecks

prop_something_something = ... 

がたくさんあります。便宜上

、簡単にそれらのすべてを実行するために、私は

runchecks = do 
    quickCheck prop_something_something 
    quickCheck prop_something_different 

を定義するが、runchecksを生成するための良い方法はありますか?

TL; DR:すべてのクイックチェックをファイル内で簡単に実行したい。 1つの方法は、runnableテストの前にtest_などの接頭辞を付けることですが、それはあまりにもハッキリかもしれません。

答えて

7

test-framework-thパッケージでこれを行うことができます。ただ、やる:

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

これはテストを実行しているのtest-framework方法を使用します、あなたは単にしばしば良いことである、次々にテストを実行することにより、取得したいものより少しより多くの情報を取得します。すなわち。

これを有効にするには、明らかにTemplateHaskellが有効になっている必要があります。 CabalファイルにDefault-extensions: TemplateHaskellを追加するか、{-# LANGUAGE TemplateHaskell #-}をファイルの先頭に追加してください。

+0

これを追加するだけで、このエラーが発生します。http://hpaste.org/67672 - 他の変更を加える必要がありますか?あなたが望むなら、私はもっとコードを貼り付けます。 –

+0

どうやら、QuickCheck2プロバイダーモジュールも含める必要があります。詳細は私の更新された答えを見てください。 – dflemstr

+0

はい、インポートを追加するTest.Framework.Providers.QuickCheck2が機能しました。ありがとう。 :) –

8

この機能は、QuickCheck 2でもそのまま使用できます。の機能を参照してください。Test.QuickCheck.AllTemplateHaskellのインポートが必要です。 quickCheckAllは、名前がprop_で始まるモジュール内のすべての関数をテストします。

関連する問題