是否有一组JDBC存根/模拟可用于任何地方?

Emi*_*l H 7 java tdd unit-testing jdbc

在过去的几年里,我一直在努力研究单元测试数据库代码以及随之而来的所有痛苦.我发现这个现有的帖子我发现很有启发性:

接受的答案的作者建议,模拟整个数据库层以验证生成的SQL可能很有用.几个月前,当我第一次阅读答案时,我没有想太多,但最近我发现了SQL生成错误,错误分配字段等导致的一些错误.我确实意识到JDBC相当臃肿并且容易出错,但是在这一点上切换到不同的东西不是一种选择.

有问题的应用程序是数据源的批处理器,直接使用JDBC而不是ORM.除了实际的实现之外,所有JDBC代码都被分成不同的DAO对象,其中每个对象都有自己的接口和存根.这使我能够实现业务层的良好测试覆盖率,但数据库层的测试几乎不存在.

是否存在JDBC(java.sql)接口的现有存根实现,可以将其注入DAO类并用于验证生成的SQL并可能发回一些预编程的结果?

set*_*eth 7

我不知道你是否看过它,但有MockRunner.它提供了许多实现JDBC接口(以及其他J2EE类)的类.这是JDBC模拟对象.还有很多例子.