java - JUnit AssertEquals 失败

标签 java junit junit4

我有一个用于以下内容的代码

import static org.junit.Assert.assertEquals;

System.out.println("obj1 name = " + obj1.getName());
System.out.println("obj1 value = " + (obj1.getvalue() == null ? "null" : "not null"));
System.out.println("obj2 name = " + obj2.getName());
System.out.println("obj2 value = " + (obj2.getvalue() == null ? "null" : "not null"));

assertEquals(obj2, obj1);

产量

obj1 name = DC2
obj1 value = null
obj2 name = DC2
obj2 value = null

java.lang.AssertionError: 
Expected :com.gms.contract.myClass.inventory.MyClass@795ce9b5
Actual   :com.gms.contract.myClass.inventory.MyClass@280cb0b4

assertEquals 不是应该按值比较吗? 在我看来,它比较对象地址。 但也许我错了?...

最佳答案

Isn't assertEquals suppose to compare by value??

不,它应该使用 equals 方法进行比较。

您需要重写MyClass中的equals(并相应地重写hashCode)。

It looks to me that it compares objects address.

不,这只是在 MyClass 上调用 toString() 的结果,而您没有覆盖它。如果您希望显示更有意义的内容,也可以重写 toString()

关于java - JUnit AssertEquals 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52607509/

相关文章:

junit4 - 在 Kotlin 中使用 @ClassRule

java - 如何在运行测试之前使异步作业的 JUnit4 "Wait"完成

java - 当键盘处于全屏模式时,EditText 提示不会改变?

java - 当坐标正确生成时,为什么我的代码没有生成多边形?

java - 在 LinkedList 的末尾插入

java - JUnit 测试 Spymemcached 客户端

java.lang.IllegalStateException : Unable to find a @SpringBootConfiguration, 您需要在测试中使用 @ContextConfiguration

java - 如何在类中模拟整数

java - 无法使用 logback 附加程序将日志推送到应用程序洞察

java - 在不重构的情况下使用 mockito 测试本地作用域对象