HSpec を使ったテストコードを cabal で自動実行したいのだが、
テストコードの書き方が分からん。
(参考資料 : https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/ja/tutorial.md

Exceptoin の bracket 関数を使って、
メイン処理の前後でリソースの確保と開放を行う関数 useResource(仮名)がある。

メイン処理サブ関数 f1、f2、..., fn があって、
メイン処理関数 f :: Resource -> IO a の中でそれらが呼ばれ、処理される。
もちろん、f1、f2 らはそれぞれ useResource 関数で確保したリソースを使う。

本来なら f に useResource を適用して一連の処理を行うのだが、
今は個々の f1、f2、..., fn をテストしたい。

こういう状況の場合、HSpec 用の t :: Spec 関数はどう書くのが一般的なのかな。

describe "〜〜〜"
 it "〜〜〜" $ do
  [ここ]

[ここ] に useResource を書いて f1 や f2 などをそれぞれぶち込んで
結果を正常値と比較したり、例外の発生をテスしたりすると、
個々のテスト毎にリソースの確保と開放が発生するよね。

cabal で自動テスト実行するなら、これは仕方ないのかな?

もしリソースがデータベースとかで、テストで QuickCheck を使ってたら、
けっこう悲惨なことにならない?