比较两个对象时,JUnit assertEquals()不起作用
我正在尝试摆脱Java的困扰。单元测试对我来说非常重要,因此最近我开始使用JUnit。一开始很难,但我已经掌握了。至此为止,我所有的测试都进行了工作,除了比较相同类的两个对象(我没有尝试测试创建不同类的对象的函数)。基本上,当我在类中有一个创建该类新实例的方法并尝试测试该方法时,会收到一个奇怪的错误。
“预期:runnersLog.MTLog@433c675d,但是是runnersLog.MTLog@3f91beef”
我曾尝试研究此问题,但没有发现任何帮助。这是我在github上的课程的链接。我尝试测试的mt()
方法是方法,测试类是ILogTest
。
这不是我遇到此问题的唯一情况。对于任何具有返回相同类的新对象的方法的类,我都会收到完全相同的3f91beef错误(即使对象更复杂-带参数)
回答:
assertEquals
将Object#equals
用于比较的每个对象。看起来您的类ILogTest
没有重写equals
方法,因此调用Object#equals
将仅比较引用本身,并且由于它们是不同的对象引用,因此结果将为false。
您有两种选择:
- 覆盖
public boolean equals(Object o)
在ILogTest
。 - 使用
assertEquals
在实现相关领域equals
的方法如String
,Integer
,Long
,等这一个需要更多的代码,但是,当你不能修改类(ES)被断言是非常有用的。
以上是 比较两个对象时,JUnit assertEquals()不起作用 的全部内容, 来源链接: utcz.com/qa/410832.html