单元测试返回Connection对象的方法

时间:2016-04-05 22:18:18

标签: java sqlite unit-testing jdbc junit

我已经实现了一个返回Connection对象的方法。

现在我想对该方法进行单元测试,并在制作典型的

assertEquals(expectedConnection, actualConnection);

它失败并显示错误代码:

  

java.lang.AssertionError:expected   [org.sqlite.SQLiteConnection@1a968a59]但发现了   [org.sqlite.SQLiteConnection@4667ae56]

我希望测试通过,即使对象不一样(这就是我没有使用assertSame的原因),它们具有相同的特性(以相同的方式构建,具有相同的类属性)。 ..有没有办法测试Connection对象?

注意:我对返回语句的方法的单元测试有同样的问题

感谢您的帮助!!

2 个答案:

答案 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