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でキャストする必要があります。