如何使用jdbc编写带有事务的可测试服务/ dao

时间:2012-07-30 03:35:33

标签: java jdbc mocking

这些天我编写了一些没有spring支持的代码,并尝试编写这样的代码In Service ..

c = ds.getConnection();
c.setAutoCommit(false);
try {
    dao.findXX(c, id);
    c.commit();
} catch (Exception ex) {
    c.rollback();
}

但是,当我尝试模拟DAO并测试我的服务时遇到了一些问题。 因为调用了getConnection,它将连接到一个不想查看我们的数据库。

如何使用jdbc编写service / dao以便于测试?

1 个答案:

答案 0 :(得分:0)

我建议使用一个内存数据库(HSQL,Derby,H2) 测试开始时,您只需创建与内存中数据库的连接并模拟ds,以便在调用getConnection时返回此连接。

使用以下连接字符串之一:

public static final String JDBC_URL_DERBY = "jdbc:derby:memory:some_db_name;drop=true";
public static final String JDBC_URL_HSQL = "jdbc:hsqldb:mem:some_db_name;shutdown=true";
public static final String JDBC_URL_H2 = "jdbc:h2:mem:some_db_name";

所有这些连接都创建名为* some_db_name *

的内存数据库实例