数据库单元测试-回滚事务
时间:2020-01-09 10:35:38 来源:igfitidea点击:
如果我们要测试使用数据库的组件,例如一个DAO类,我们可能需要测试该组件是否确实将数据插入数据库中,对其进行更新等。
在测试数据库组件是否正常工作时,通常必须向数据库中插入大量数据,因此这些组件需要处理一些数据。不幸的是,这也意味着我们必须在单元测试完成后清理所有这些数据,以免干扰设置数据的其他单元测试。
实现此目的的明智方法是通过在事务内部运行单元测试。所有数据都在同一事务中插入,读取等。单元测试完成后,我们可以回滚事务,所有插入的数据都将消失。
这是一个简单的模板,向我们显示如何执行此操作:
@Test
public void testIt() throws Exception {
Connection connection = getConnection();
connection.setAutoCommit(false); //begin transaction
MyDao myDao = new MyDaoImpl(connection);
try{
myDao.insertABC("1");
myDao.insertABC("2");
assertEquals("1", myDao.readABC("1"));
assertEquals("2", myDao.readABC("2"));
} finally {
connection.rollback();
connection.close();
}
}
持久性技术可能不允许我们直接访问数据库连接。但是,通常我们仍然可以控制基础事务,从而启动和回滚事务。

