首页 > 解决方案 > 对 assertEquals 的模糊引用

问题描述

days = DayHelper.getInstance().getDays();
Assert.assertNotNull(days);
Assert.assertEquals(5, days.size());

final Day day = days.get(0);
Assert.assertNotNull(day);
Assert.assertEquals("01/10/2018", day.getId());
Assert.assertEquals("Mon", day.getDay());
Assert.assertEquals(1450, day.getQuota()); //Red underlined
Assert.assertEquals(41, day.getWeekno());  //Red underlined
Assert.assertEquals("Inserted duing DayHelperTest", day.getNote());

在“最后一天”块中,三个断言编译没有问题......String预期和实际String来自数据库

红色下划线的两个期望Integer并得到一个Integer.

但是,我无法摆脱下面的错误!!!

错误:(56, 19) java: org.junit.Assert 中的方法 assertEquals(java.lang.Object,java.lang.Object) 和 org.junit.Assert 中的方法 assertEquals(long,long) 对 assertEquals 的引用不明确匹配

有人可以帮忙吗?

谢谢。

标签: javaassert

解决方案


当我得到这样的错误时assertEquals,这是​​因为我试图断言Long从方法返回的对象等于long原始值。

两个参数都应该是原始long

assertEquals(1450L, (long) day.getQuota());

(这可能会导致NullPointerExceptionifgetQuota()返回 null,但无论如何您的测试都会失败)

或者两个参数都应该是对象

assertEquals(Long.valueOf(1450), day.getQuota());

推荐阅读