【发布时间】:2020-11-03 09:21:18
【问题描述】:
我需要使用 junit 5 和 assertThat 编写测试用例来检查空值。
我写的如下。但是,这会导致数据类型不匹配。
@Test
void shouldReturnNull() {
assertThat(OffsetDateTimeConverter.toOffsetDateTime(null), nullValue(OffsetDateTime.class));
}
也试过了。然而同样的错误。
@Test
void shouldReturnNull() {
assertThat(OffsetDateTimeConverter.toOffsetDateTime(null), is(nullValue(OffsetDateTime.class)));
}
任何示例/建议如何使用 nullValue(T type) 来解决此问题?
我需要编写测试用例来验证 java.sql.Date 是否使用我的 Converter 类正确转换为 java.time.OffsetDateTime。因此,我写了如下。
@Test
void toOffsetDateTime() {
Date date = new Date(System.currentTimeMillis());
assertThat(date.toLocalDate()).isEqualTo(OffsetDateTimeConverter.toOffsetDateTime(date).toLocalDate());
}
上面的测试用例工作正常。
我想知道这是否是正确的方法,因为我将实际值和预期值都转换为本地日期以进行比较?
【问题讨论】:
-
你可以试试
assertThat(cheese, is(nullValue(Cheese.class))吗?参考:hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/core/… -
@Liquidpie 尝试了建议的方法,同样的错误。也更新了问题。
-
你的
OffsetDateTimeConverter.toOffsetDateTime()方法是什么样的? -
@Liquidpie return Optional.ofNullable(date).map(d-> OffsetDateTime.of(d.toLocalDate(), LocalTime.NOON, ZoneOffset.UTC)).orElse(null);跨度>
标签: java junit5 hamcrest assertthat