Java assertEquals(长、整数)能否成功?

Java assertEquals(长、整数)能否成功?,java,junit,Java,Junit,目前我正在做一些代码检查,发现这行代码中断了测试用例: assertEquals(Long.valueOf(4321), lMessage.getNumber()); getNumber返回一个整数,该整数也是4321。 我把它改成这样: assertTrue(4321 == lSavedStoerung.getMessage()); 因为在我对equals方法的理解中,assertEquals在第一个示例中永远不会返回true。我的assertTrue所有测试用例都运行良好 还是我理解错了

目前我正在做一些代码检查,发现这行代码中断了测试用例:

assertEquals(Long.valueOf(4321), lMessage.getNumber());
getNumber
返回一个
整数
,该整数也是
4321
。 我把它改成这样:

assertTrue(4321 == lSavedStoerung.getMessage());
因为在我对equals方法的理解中,
assertEquals
在第一个示例中永远不会返回true。我的
assertTrue
所有测试用例都运行良好


还是我理解错了?

assertEquals测试失败的原因是等式不仅考虑了数字的值,还考虑了它的类型
java.lang.Long
对象不作为
equal
java.lang.Integer
进行比较

由于
lMessage.getNumber()
返回一个
int
,所以Java在传递到
assertEquals
之前将其包装成
Integer
。这就是为什么您可以使用
Integer.valueOf
来修复测试用例:

assertEquals(Integer.valueOf(4321), lMessage.getNumber());

4321是一个很长的时间的原因是什么?如果没有必要,请使用dasblinkenlight sugested的整数解决方案

assertEquals(Integer.valueOf(4321), lMessage.getNumber());

另一方面,如果您的代码允许
lMessage.getNumber()
根据具体情况返回long,那么您可以将其放入long中进行测试

assertEquals(Long.valueOf(4321), (long) lMessage.getNumber());

PS:使用assertTrue&==获得太多的可编译性会给您带来麻烦,如果您曾经比较一些不是原始数据类型的内容,但在这个特定的示例中它不会。您确定让方法返回一个
整数而不是
不是错误吗?getNumber返回整数。对此我绝对肯定。assertEquals()通常比assertTrue()好,因为当测试失败时,输出将同时包含预期值和实际值。如果使用assertTrue会有问题吗?因为在那个地方,我只对值感兴趣。或者更简单地说:
assertEquals(4321,lMessage.getNumber())
@StefanBeike使用
assertTrue
还不错,如果它符合您的目的,您可以使用它。@assylias然后我得到编译器错误:“assertEquals(Object,Object)方法对于MessageDaoTest类型不明确。”
assertEquals(Long.valueOf(4321), (long) lMessage.getNumber());