さて、テスト対象のメソッドを呼び出したあと、どうやって検証しましょう??こう考えました。
処理 | 検証の対象 |
---|---|
検索 | 対象メソッドの戻り値 |
登録 | 対象テーブルのデータ |
更新 | 対象テーブルのデータ |
削除 | 対象テーブルのデータ |
なので、テストフレームワークには
- テーブルと期待値の比較
- 戻り値と期待値の比較
という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)
を呼び出します。