質問: 現在、DBUnitを採用するか迷っていまして DBUnitのassertEqualsメソッドで テーブルオブジェクト同士の比較ができると思いますが データ値が異なる場合、カラム毎にエラー情報は出るのでしょうか? 例えば、以下の場合 実テーブル ID:1 name:本1 suryo:2 検証元テーブル ID:1 name:本1 suryo:3 ** suryo 予測 3、 実際 2** のようなイメージ 知りたい理由: 「比較したオブジェクトが異なります」だけのメッセージだけの場合、 何が違うかわからないためです。 調査する時間がなく 知っている方が、いらっしゃいましたら教えてください。
回答: DBUnitはテーブル同士の比較も可能です。(前提条件として、双方PrimaryKeyを設定しておくことがあります) ご懸念の点についても、割と詳細に出してくれます。 * テーブル名 * 行番号(0開始) * カラム名 * 期待する値 * 実際の値 * (比較できる場合は)期待値と実値の違い アサーションエラーのトレース例を貼りますので、参考にしてください。 ``` junit.framework.ComparisonFailure: value (table=sample2, row=1, col=storeText) expected:<[anoth]er> but was:<[us]er> at org.dbunit.assertion.JUnitFailureFactory.createFailure(JUnitFailureFactory.java:39) at org.dbunit.assertion.DefaultFailureHandler.createFailure(DefaultFailureHandler.java:97) ...(中略)... org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) ``` 文字列同士で比較して違うところを示してくれますね。 動作確認は以下の環境で行いました。 * DBUnit 2.5.1 * MySQL 5.5.34 参考になれば幸いです。