■ はじめに
https://blogs.yahoo.co.jp/dk521123/36157721.htmlの続き。 今回は、時間以外のDBデータの比較について扱う。 なお、時間に関する比較は、以下の関連記事を参照。AssertJ / AssertJ-DB ~ 基本編 [3] / 時間に関する比較 ~
https://blogs.yahoo.co.jp/dk521123/37145996.html
【1】テーブル・インスタンスを取得して比較する
* テーブルのインスタンスを取得して、比較することもできる
構文
Source source = new Source("jdbc:mysql://【DB Host】:【ポート】/【DB名】", "【ID】", "【パスワード】");
Table table = new Table(source, "【テーブル名】");
assertThat(table).row(【行(0~)】).value("【項目1】").isEqualTo(【期待値1】);
assertThat(table).row(【行(0~)】).value("【項目2】").isEqualTo(【期待値2】);
assertThat(table).row(【行(0~)】).value("【項目3】").isEqualTo(【期待値3】);
詳細なサンプルは、以下の関連記事を参照のこと。 https://blogs.yahoo.co.jp/dk521123/36164701.html
【2】DBの変更に関わるインスタンスを取得して比較する
http://joel-costigliola.github.io/assertj/assertj-db-concepts.html#changesの図が分かりやすいかも。
構文
Source source = new Source("jdbc:mysql://【DB Host】:【ポート】/【DB名】", "【ID】", "【パスワード】");
// DB変更を追跡するための Changesインスタンス
Changes changes = new Changes(source);
// スタートポイント(変更前の状態を記憶)
changes.setStartPointNow();
// テスト対象メソッド実行...
// ... 略 ...
// エンドポイント(変更後の状態を記憶)
changes.setEndPointNow();
// 項目を明示的に指定して比較可能
assertThat(changes)
.hasNumberOfChanges(【変更したレコード数】)
.changeOnTable("【テーブル名】")
.isCreation() // isDeletion() / isModification()
.rowAtEndPoint()
.value("【項目1】").isEqualTo("【期待値1】")
.value("【項目2】").isEqualTo("【期待値2】")
.value("【項目3】").isEqualTo("【期待値3】");
// assertThat(changes)
// .hasNumberOfChanges(1)
// .changeOnTable("person")
// .isCreation() // isDeletion() / isModification()
// .rowAtEndPoint()
// .value("id").isEqualTo(1L)
// .value("name").isEqualTo("John")
// .value("birthdate").isEqualTo(DateValue.of(2001, 1, 21));
詳細なサンプルは、以下の関連記事を参照のこと。 https://blogs.yahoo.co.jp/dk521123/36157721.html
参考文献
http://create-something.hatenadiary.jp/entry/2017/09/16/160308http://se-bikou.blogspot.jp/2017/05/assertj-db.html