assertj-dbを依存に追加する
testCompile 'org.assertj:assertj-db:1.2.0'
テーブルの内容
ID,NAME 1,name 2,name_2
シンプルにテーブルの内容をアサートする例
Tableクラスを使うことでテーブルの内容全体に対してアサートを行なうことができます。final OracleDataSource source = new OracleDataSource();
// 接続先情報は省略
final Table.Order order = Table.Order.asc("id");
final Table table = new Table(source, "test_table", new Table.Order[] {order});
assertThat(table)
        .column("id")
        .value().isEqualTo(1L)
        .value().isEqualTo(2L)
        .column("name")
        .value().isEqualTo("name")
        .value().isEqualTo("name_2");
SQLの結果に対してアサート
Requestクラスを使ってSQLを実行し、その取得内容をアサートすることができます。final Request request = new Request(source, "select name from test_table where id = 2");
assertThat(request).column(0).value().isEqualTo("name_2");
テーブルの変更内容をアサートする
Changesクラスを使うことで、開始ポイントと終了ポイントを定義しその間の変更内容をアサートすることができます。この例では、1レコードの変更が正しいことをアサートしています。
final Table table = new Table(source, "test_table");
final Changes changes = new Changes(table);
changes.setStartPointNow();
try (final Connection connection = source.getConnection();
     final PreparedStatement statement = connection.prepareStatement(
             "update test_table set name = ? where id = 2")) {
    statement.setString(1, "へんこうご");
    statement.execute();
}
changes.setEndPointNow();
assertThat(changes)
        .hasNumberOfChanges(1)                       // 1レコード変更されている
        .ofModification().hasNumberOfChanges(1)      // 変更内容は更新
        .change()
        .columnAmongTheModifiedOnes()
        .hasColumnName("name")
        .hasValues("name_2", "へんこうご");          // name_2からへんこうごに変更されていること