Fight the Future

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

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

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)

を呼び出します。