对assertEquals的模糊引用

时间:2018-10-05 09:29:49

标签: java assert

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());

在“最后一天”块中,三个Asserts毫无问题地进行了编译...预期String,而实际的String来自数据库

用红色下划线标记的两个期望Integer并得到Integer

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

  

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

有人可以帮忙吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

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

两个参数都应为原始long s

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

(如果NullPointerException返回null,则有getQuota()的风险,但是您的测试仍然会失败)

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

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

答案 1 :(得分:0)

尝试一下:

Assert.assertEquals(1450L, day.getQuota());
Assert.assertEquals(41L, day.getWeekno());

注意到数字前面的L吗?这就是我们指定在long个值之间进行比较的方式。