Test.HUnit
テストを実行するための大きな赤いボタンを提供します。
runTestTT :: Test -> IO Counts
大規模なテストスイートを構築する必要があるため、これTest
は単一のテストではなく、実際にAssertion
は葉にラベルが付けられたバラの木です。
data Test
= TestCase Assertion | TestList [Test] | TestLabel String Test
-- Defined in `Test.HUnit.Base'
抽象的ではないので、処理することができます。特に有用な処理の1つは、パスによるサブツリーの抽出です。
byPath = flip $ foldl f where
f (TestList l) = (l !!)
f (TestLabel _ t) = const t
f t = const t
したがって、たとえば、スイート全体を待つ代わりに、単一のサブスイートrunTestTT $ byPath [1] tests
またはテストパスによって識別される特定のテストを実行できます。runTestTT $ byPath [1,7,3] tests
自家製ツールの欠点の1つは、テストパスが保持されない(短縮される)ことです。
そのような処理ヘルパーツールはすでにHackageにありますか?