Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

DbUnitのDatabaseTestCaseを継承して独自のテストフレームワークを作る3

さて、テスト対象のメソッドを呼び出したあと、どうやって検証しましょう??こう考えました。

処理 検証の対象
検索 対象メソッドの戻り値
登録 対象テーブルのデータ
更新 対象テーブルのデータ
削除 対象テーブルのデータ

なので、テストフレームワークには

  1. テーブルと期待値の比較
  2. 戻り値と期待値の比較

という2つが必要かなと。
「テーブルと期待値の比較」はすぐにできます。期待値はexcelに記述してInputStreamに変換したあとXlsDataSetのコンストラクタに渡します。XlsDataSetはIDataSetの実装クラスです。
で、テーブルのデータですが、DbUnitのIDatabaseConnectionにはcreateDataSet()というメソッドがあります。この戻り値がIDataSet型なので、先ほどのexcelから作ったXlsDataSetと比較すればテーブルと期待値の比較ができる、というわけです。createDataSet()は引数なしで呼び出すとそのスキーマの全テーブルを取ってきますが、String配列でテーブルを指定することができます。

IDataSet actual = getConnection().createDataSet(new String[]{"テーブル名"});

で、2つのIDataSetの比較ですが、org.dbunit.Assertionクラスを使います。

Assertion.assertEquals(IDataSet expectedDataSet,IDataSet actualDataSet)

を呼び出します。