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をある程度縛ってやれば、個別最適で便利なテストツールが色々できると思います。