当前位置: 首页 > 面试题库 >

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

宗政卓
2023-03-14
问题内容

我正在尝试摆脱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)被断言是非常有用的。


 类似资料:
  • 在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部

  • 创建一个名为“Circle”的Java类来实现Java。io。可串行化接口,并基于半径对圆进行建模。半径不能小于零。实现radius的getter和setter方法。还包括在circle类中重写toString。创建类的比较器,用于比较Circle类型的两个对象。 这就是我目前所拥有的 这是我的比较器类 我的问题是我做得对还是不对?

  • 对于PostgreSQL(v9.5),JSONB格式提供了极好的机会。但现在我只能做一个相对简单的手术; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的 应该返回第1行与第2行的差异: 相反,它还返回重复项(

  • 使用RestAssured,我试图比较两个JSON对象。 示例:第一个JSON来自excel,我将其作为字符串读取并存储 第二个 JSON 是返回响应对象的响应,该响应对象实际上是一个 JSON 我想将这两者作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。 我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人

  • 所以我正在寻找根据对象中的字段对对象的数组列表进行排序,但我收到一个错误“无法解析方法compareTo(int)”

  • 问题内容: 我有两个从同一类实例化的java对象。 如果我将它们的两个属性都设置为完全相同的值,然后验证它们是否相同 但是,这些方法都不返回真实值。我已经检查了每个属性,并且它们匹配。 如何比较这两个对象以验证它们是否相同? 问题答案: 你需要提供自己的实现。 如果哈希表中有可能使用你的对象,则还应该重写。一个合理的实施将是该对象的字段的哈希码喜欢的东西结合起来: