java - 如何在 assertThat 中使用带有类型推断的 hamcrest nullValue
问题描述
我需要使用 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
方法。
您正在使用应该使用 hamcrest 的assertThat
方法。assertj
例如:org.hamcrest.MatcherAssert.assertThat
推荐阅读
- angular - 如何只关闭一个特定的对话框
- flutter - onPressed 动作在 Flutter 中的自定义前导图像 Appbar 上
- java - 将图像文件从 AWS S3 对象转换为 Base64 时出错
- c# - Appium 1.18.0 查找元素的时间太长
- json - 使用 jq:我如何在其他字段中使用相同的搜索而不重复代码?
- java - 没有后缀时区的Java日期到字符串
- html - 如何将图片放在块的中心?
- amazon-web-services - 如何在 Amazon Keyspaces 中添加权限?
- .net - 本地主机与 Web 主机服务器上的 Vue 路由器行为
- r - 获取R中两个多面体之间的重叠百分比