繁体   English   中英

assertEquals(Long,Integer)是否可以成功?

[英]Can assertEquals(Long,Integer) succeed?

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

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

getNumber返回一个也是4321Integer 我将其更改为:

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

要么

assertEquals(4321, lMessage.getNumber());

另一方面,如果您的代码允许lMessage.getNumber()根据情况返回长lMessage.getNumber() ,则可以将其lMessage.getNumber()以进行测试。

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

PS:使用assertTrue&==过于自在时,如果您比较原始数据类型中未包含的内容,则会给您带来麻烦,但在此特定示例中不会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM