我已经实现了一个返回Connection对象的方法。
现在我想对该方法进行单元测试,并在制作典型的
时assertEquals(expectedConnection, actualConnection);
它失败并显示错误代码:
java.lang.AssertionError:expected [org.sqlite.SQLiteConnection@1a968a59]但发现了 [org.sqlite.SQLiteConnection@4667ae56]
我希望测试通过,即使对象不一样(这就是我没有使用assertSame的原因),它们具有相同的特性(以相同的方式构建,具有相同的类属性)。 ..有没有办法测试Connection对象?
注意:我对返回语句的方法的单元测试有同样的问题
感谢您的帮助!!
答案 0 :(得分:0)
我不认为创建新连接并与实际连接进行比较是个好主意。您可以断言用户,密码和连接字符串,而不是声明实际连接。
我在这种情况下很清楚你正在比较参考。您只能在从equals(Object o)
类重写Object
的类上断言,以确保SQLiteConnection
不会覆盖来自Object的equals方法。
答案 1 :(得分:0)
assertEquals(expected,actual)使用对象的equals方法。 SQLiteConnection从Object class继承了它的equals()方法。
由于default equals implementation比较引用以检查两个引用是否引用同一个对象。这种比较肯定会失败。因为在您的情况下,两个引用都引用不同的对象,因此差异哈希码。
您可以使用 ArgumentCaptor 来捕获实际对象中的值并进行比较。 Here is an example