datetime 日期
自从我开始涉足自动化测试和练习TDD以来,验证日期值很痛苦。 幸运的是,这里有一个不错的库,可用于遗留Date和新的Java 8 DateTime API ,从而解决了这一难题。
如果您属于Java开发社区中较健康的部分,并且每天练习单元测试,那么您可能知道Hamcrest Java库 。 它可以使您的测试更具可读性。 它的体系结构是非常模块化的,并由其他各种测试库使用。
Matcher的概念是灵活性的主要部分。 我现在不打算深入探讨这个概念。 如果您不熟悉,只需快速阅读Hamcrest教程 。 您可以插入测试工具箱中的匹配器之一是hamcrest-date库。 使用此库,我们可以轻松测试在特定范围内生成的日期:
@Test
public void validateDate() {//GIVENDate expectedDate = new Date();//WHENDate actualDate = new Date();//THENassertThat(actualDate, DateMatchers.within(2, ChronoUnit.SECONDS, expectedDate));
}
对于Java 8类型,我们也可以这样做:
@Test
public void validateDateTime() {//GIVENLocalDateTime expectedDateTime = LocalDateTime.now();//WHENLocalDateTime actualDateTime = LocalDateTime.now();//THENassertThat(actualDateTime, LocalDateTimeMatchers.within(2, ChronoUnit.SECONDS, expectedDateTime));
}
或选择hamcrest-core库提供的各种异国验证 :
@Test
public void validateZonedDateTime() {//GIVENZonedDateTime expectedDateTime = ZonedDateTime.of(2016, 3, 20, 13, 3, 0, 0, ZoneId.of("GMT+1"));//WHENZonedDateTime actualDateTime = ZonedDateTime.of(2016, 3, 20, 13, 3, 0, 0, ZoneId.of("GMT-0"));//THENassertThat(actualDateTime, ZonedDateTimeMatchers.sameDay(expectedDateTime));assertThat(actualDateTime, ZonedDateTimeMatchers.after(expectedDateTime));assertThat(actualDateTime, ZonedDateTimeMatchers.isSunday());assertThat(actualDateTime, ZonedDateTimeMatchers.isMarch());
}
- 创建者对这个漂亮的小图书馆表示敬意。 此示例托管在Github中 。
翻译自: https://www.javacodegeeks.com/2016/03/verifying-datetime-date-hamcrest.html
datetime 日期