我如何将 Integer 和 Long 类型与 Junit 进行比较?
How do I compare Integer and Long types with Junit?
如何将 Integer 和 Long 类型与 Junit 进行比较?
assertThat(poiList.get(0).get("id_pk")).isEqualTo(member.getId_pk());
的结果是:
org.opentest4j.AssertionFailedError:
expected: 1L
but was : 1
Expected :1L
Actual :1
两种类型是:
log.info("getClass1: {}", poiList.get(0).get("id_pk").getClass());
log.info("getClass2: {}", member.getId_pk().getClass());
2021-09-30 15:29:08.904 INFO 19504 --- [ main] c.p.i.domain.item.ItemServiceTest : getClass1: class java.lang.Integer
2021-09-30 15:29:08.904 INFO 19504 --- [ main] c.p.i.domain.item.ItemServiceTest : getClass2: class java.lang.Long
如何比较 1 和 1L 是否相等?
此致
您可以通过 java.lang.Integer#longValue
:
将 Integer 转换为 Long
assertThat(poiList.get(0).get("id_pk").longValue()).isEqualTo(member.getId_pk());
但要注意空指针,如果 poiList.get(0).get("id_pk")
为空,则会抛出空指针异常!
看起来应该在实体级别进行更正,因为如果我们说 poiList.get(0).get("id_pk")
等于 member.getId_pk()
那么逻辑上它们的数据类型也应该相同。
作为首选解决方案,您应该在实体级别更正它。
但是,如果您仍想断言它,请先将 int
转换为 long
,然后再对其断言。
poiList.get(0).get("id_pk").longValue()
两种方式:
Java 的 Long class 有一个 .intValue() method 返回一个 int。
Java 的整数 class 有一个 .longvalue() method.
我会推荐第二种,因为 long 可以取比 int 更大的值范围。
这个怎么样:
assertThat(new BigDecimal(1)).isEqualTo(new BigDecimal(1L));
如所有答案所示,您需要更改一个参数的类型。或许都改成 String 也是个好主意。
assertThat(String.valueOf(1L)).isEqualTo(String.valueOf(1))
如何将 Integer 和 Long 类型与 Junit 进行比较?
assertThat(poiList.get(0).get("id_pk")).isEqualTo(member.getId_pk());
的结果是:
org.opentest4j.AssertionFailedError:
expected: 1L
but was : 1
Expected :1L
Actual :1
两种类型是:
log.info("getClass1: {}", poiList.get(0).get("id_pk").getClass());
log.info("getClass2: {}", member.getId_pk().getClass());
2021-09-30 15:29:08.904 INFO 19504 --- [ main] c.p.i.domain.item.ItemServiceTest : getClass1: class java.lang.Integer
2021-09-30 15:29:08.904 INFO 19504 --- [ main] c.p.i.domain.item.ItemServiceTest : getClass2: class java.lang.Long
如何比较 1 和 1L 是否相等?
此致
您可以通过 java.lang.Integer#longValue
:
assertThat(poiList.get(0).get("id_pk").longValue()).isEqualTo(member.getId_pk());
但要注意空指针,如果 poiList.get(0).get("id_pk")
为空,则会抛出空指针异常!
看起来应该在实体级别进行更正,因为如果我们说 poiList.get(0).get("id_pk")
等于 member.getId_pk()
那么逻辑上它们的数据类型也应该相同。
作为首选解决方案,您应该在实体级别更正它。
但是,如果您仍想断言它,请先将 int
转换为 long
,然后再对其断言。
poiList.get(0).get("id_pk").longValue()
两种方式:
Java 的 Long class 有一个 .intValue() method 返回一个 int。
Java 的整数 class 有一个 .longvalue() method.
我会推荐第二种,因为 long 可以取比 int 更大的值范围。
这个怎么样:
assertThat(new BigDecimal(1)).isEqualTo(new BigDecimal(1L));
如所有答案所示,您需要更改一个参数的类型。或许都改成 String 也是个好主意。
assertThat(String.valueOf(1L)).isEqualTo(String.valueOf(1))