JLogTest
似たような考え方で自作してましたけどOSSでもあるんですね。
JLogTest http://jlogtest.sourceforge.jp/
JLogTestは、JUnit 4の拡張として動作するテストの補助ツールです。 JLogTestを用いると、そこそこ動作する実装コードが存在する場合に、その実装コードの出力値を記録してassertEqualsのexpectedの値として利用することが可能になります。 expectedの入力に長い時間を費やす必要はもうなくなります。
http://jlogtest.sourceforge.jp/?Getting+Started
検証用のコードなんて全部書いてられない、もっと楽にならないの?
というのがあったので次のようなことをやってました。
- 専用の検証用メソッドを1つ用意してあげる。テストコードではそのメソッドを呼ぶだけで良い。引数にはテスト対象メソッドのアウトプットを渡す。
- 検証用メソッドは、引数で渡されたアウトプットをXMLにダンプする
- テストの初回実行時はここでエラーとなって終了(比較対象の想定データがないため)
- ダンプされたXMLを目視で確認し、想定どおりかチェックする
- OKだったらそのXMLを想定データとする(リネームする)
- テストを再実行する。今度は想定データが用意されているので比較が行われ、一致していればテスト合格
まあ、これで確認できるのはメソッドの戻り値だけなので、ロジックの作りはステートレスが大前提です。(状態、DBのテストは別の方法でやります)
ちなみに入力データも作るのコードで書きたくないよ〜って言う人もいるので、入力データの作成補助ユーティリティなんかもあったり。
それもクラスのIFのルールをがちがちに固めないと使えないんだけどね。。。
クラスのIFをある程度縛ってやれば、個別最適で便利なテストツールが色々できると思います。