■ はじめに
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