単体テスト自動化 DbUnitでテーブル比較を行う方法

シェアする

前回のDbSetupの続きとなります。本記事は、db更新処理後の値が正しい値で更新されているかをDbUnitを使って確認する方法の説明になります。

POMの設定

まずは、前回同様にpom.xmlにDbUnitのdependencyを追加しましょう。
mavenリポジトリはこちらになります。

テスト内容

テスト対象クラスでCustomerテーブルのid=1のname値をhogeからyamadaに更新する処理があるとし、この更新処理が正しい結果となるかのテストを行います。比較方法は、期待値ファイル(xml)と更新処理後のCustomerテーブルの比較となります。

期待値ファイルの作成

db更新処理後のCustomerテーブルの期待値を作成します。

更新処理前は下記値となっています。

idname
1hoge
2fuga

更新処理では、hogeをyamadaに更新しますので期待値は下記となります。

idname
1yamada
2fuga

上記内容のxmlファイルを、ファイル名:Customerで作成してください。ファイルの中身は下記のとおりとなります。期待値ファイルの保存場所は、プロジェクトフォルダ直下としていますので、プロジェクトフォルダ直下に配置してください。

親クラスにDbUnit処理を実装

親クラス:DbConnectionは下記となります。

前回のDbConnectionクラスとの差分は、// 追加 でコメントしている箇所となります。また、// 比較対象外項目を省く でカラム:idを比較対象外のカラムとしておりますが、更新日時等で必ず不一致となるカラムがある場合は、このようにfilterをかけることができるという意味で記載しています。

また、expectedDataSet.addReplacementObject(“null”, null);については、nullの比較を行う場合の置換処理です。期待値ファイルでは、nullを文字列の”null”とする必要があります。そのため、テーブルの値と比較するときは、文字列の”null”をnullに置換する必要があるため、addReplacementObject のメソッドで置換を行うよう実装しております。


更新処理を行うテスト対象クラスを作成

Customerテーブルのid=1のname値をhogeからyamadaに更新するクラスを下記のとおり作成します。

テストメソッドの作成

updateCustomerでの更新処理が正しい結果となるかのテストメソッドを作成します。比較方法は、期待値ファイル(xml)と更新処理後のCustomerテーブルの比較となりますので、実装は下記となります。

テスト実行すると、期待値どおりの結果となることが確認できました。

DbUnitで工数削減が期待できる

DbUnitを使用せずにチェックを行うとなると、A5M2等でテーブルを開いてキャプチャをエクセル等に貼り付けてエビデンスを作成するといった作業が必要になりますが、これをやるとなると工数がかなりかかりますし、チェックする側もチェック漏れ/見落としが発生する確率は0ではありません。

何度やっても同じチェックを行ってくれる自動化により、品質向上/工数削減が期待できます。

以上で、DbUnitでのテーブル比較方法の説明は終わりとなります。

次回は、テスト対象クラスのカバレッジが100%網羅できているのかを確認するjacocoについて説明します。

単体テスト自動化 jacocoでカバレッジ網羅を確認する方法
テスト自動化で作成したテストプログラムが、テスト対象プログラムのカバレッジを全て網羅できているのかを確認するjacocoについての説明です...
スポンサーリンク
PC用広告

フォローする

スポンサーリンク
PC用広告