我想用make db连接测试类。我想测试的类在构造函数Connection
类中接受为param。我想将模拟对象传递给构造函数。你能举例说明如何模拟数据库连接吗?
答案 0 :(得分:12)
您可以使用支持MockRunner的JDBC。像Mockito这样的通用模拟框架也可以工作,但是JDBC是一组相互返回的接口,所以手工模拟会很难。亲眼看看:How to stub/mock JDBC ResultSet to work both with Java 5 and 6?
然而,模拟JDBC是如此脆弱和冗长(无论您使用哪种工具)我建议在一些瘦DAO层中抽象JDBC访问(参见 @duffymo 答案)或者去 - 内存数据库,如H2。
另见:
答案 1 :(得分:3)
答案 2 :(得分:3)
我不会创建一个模拟连接 - 在我看来,它没有任何证据。
我可以看到为什么在使用实时连接完全测试后,你会模拟存储库/ DAO本身。您将模拟存储库/ DAO提供给服务或其他客户端,因为您已经对其进行了测试 - 在进行集成测试之前无需证明它是有效的。
答案 3 :(得分:3)
您可以使用模拟框架,例如上面答案中提到的那些(我个人使用EasyMock) OR 创建您自己的模拟对象:
class FakeConnection extends Connection{
// Overrive all method behavious you want to fake.
}
答案 4 :(得分:1)
你可以试试easymock。我认为这很容易使用。 你可以找一个教程供参考。 easymock
答案 5 :(得分:1)
如果要在许多测试用例中重用该模拟,您还可以考虑实现自己的连接实现,并在任何地方重用该实现。
答案 6 :(得分:1)
我的Acolyte框架可用于此类目的 - > https://github.com/cchantep/acolyte。
使用此lib,您可以创建一个为其提供处理程序的连接实例。实现处理程序,您可以“调度”查询或更新:生成结果集或更新计数(或警告)。