Spring JDBC+JUnit5で日付項目を検証する
文字表現の日付をDate型に変換する方法と、JUnitで日付の検証を行う方法について。
環境
- Spring Boot: 2.3.3
- Spring JDBC: 5.2.8
- JUnit5(JUnit Jupiter): 5.6.2
- H2Database: 1.4.200
日付型の値(期待値)の設定
文字列で表現した日付をDateに変換する方法はDate java.sql.Date.valueOf(String s)
を使用する。
例
Magazine magazine = new Magazine();
magazine.setIssueDate(java.sql.Date.valueOf("2019-12-31"));
ちなみに、Magazineクラスの中身は以下のようになっています。
@Data
public class Magazine {
// 省略
/** 発行日 */
private Date issueDate;
// 省略
}
JUnitでの検証
日付の検証にはAbstractDateAssert.hasSameTimeAs(String dateAsString)
を使用する。
例
Map<String, Object> actual = jdbcTemplate.queryForMap("SELECT magazine_id, name, number, publisher, issue_date FROM magazine WHERE magazine_id = 1");
assertThat((Date)actual.get("issue_date")).hasSameTimeAs("2019-12-31");
JdbcTemplate.queryForMap(String sql)
でSELECT結果をMapで取得する場合、Dateでキャストする必要があります。