AssertThat日期比较中的用法

时间:2017-02-17 19:27:26

标签: java assertj

我想针对带日期的搜索编写测试。我正在考虑类似

的测试代码
assertThat(repository.findByBookingDateAfter(LocalDate.of(2016, 1, 1))).extracting("bookingDate").are(...));

其中类结构类似于以下内容:

public class Booking{
  ...
  LocalDate bookingDate;
  ...
}

因为查询是在给定日期之后的任何预订,我的测试应该在日期之后检查该字段。经过一些在线搜索后,我没有看到任何有用的信息。我想知道我是否走在正确的轨道上。

有什么建议吗?

更新

稍后,我在build.gradle文件中更改了依赖项设置:

testCompile('org.springframework.boot:spring-boot-starter-test'){
    exclude group: 'org.assertj'
}
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.6.2'

拥有最新版本的assertj。

更新2:

以下是以" is"开头的任何方法的屏幕截图。 " isAfter"不在列表中。

enter image description here

1 个答案:

答案 0 :(得分:0)

我会使用allMatchallSatisfy断言来检查每个提取的日期是否在查询中使用的日期之后。

// set the extracted type to chain LocalDate assertion 
assertThat(result).extracting("bookingDate", LocalDate.class)
                  .allMatch(localDate -> localDate.isAfter(queryDate)));

// use a lambda to extract the LocalDate to chain LocalDate assertion
assertThat(result).extracting(Booking::getBookingDate)
                  .allSatisfy(localDate -> assertThat(localDate).isAfter(queryDate));

第二个断言会得到更好的错误信息,它会显示错误的日期。