比较两个对象时,JUnit assertEquals()不起作用

我正在尝试摆脱Java的困扰。单元测试对我来说非常重要,因此最近我开始使用JUnit。一开始很难,但我已经掌握了。至此为止,我所有的测试都进行了工作,除了比较相同类的两个对象(我没有尝试测试创建不同类的对象的函数)。基本上,当我在类中有一个创建该类新实例的方法并尝试测试该方法时,会收到一个奇怪的错误。

“预期:runnersLog.MTLog@433c675d,但是是runnersLog.MTLog@3f91beef”

我曾尝试研究此问题,但没有发现任何帮助。这是我在github上的课程的链接。我尝试测试的mt()方法是方法,测试类是ILogTest

这不是我遇到此问题的唯一情况。对于任何具有返回相同类的新对象的方法的类,我都会收到完全相同的3f91beef错误(即使对象更复杂-带参数)

回答:

assertEqualsObject#equals用于比较的每个对象。看起来您的类ILogTest没有重写equals方法,因此调用Object#equals将仅比较引用本身,并且由于它们是不同的对象引用,因此结果将为false。

您有两种选择:

  1. 覆盖public boolean equals(Object o)ILogTest
  2. 使用assertEquals在实现相关领域equals的方法如StringIntegerLong,等这一个需要更多的代码,但是,当你不能修改类(ES)被断言是非常有用的。

以上是 比较两个对象时,JUnit assertEquals()不起作用 的全部内容, 来源链接: utcz.com/qa/410832.html

回到顶部