2011-09-24 90 views
3

我经常发现错误处理是最难测试的事情之一。值得庆幸的是依赖注入和嘲笑框架,它变得更容易。如何测试数据库事务逻辑?

但是,我仍然遇到了测试数据访问对象的问题,尤其是错误处理和回滚方面。假设我有一个DAO方法的两个查询,像这样:

INSERT INTO A(AID, AVAL) 
VALUES (1, 'TEST'); 

INSERT INTO B(AID, BVAL) 
VALUES (1, 'TEST'); 

而且我想事务逻辑,在Spring的事务管理中实现,例如,如果插入到B失败INSERT INTO A回滚。

我该如何测试?

+0

您是否使用jta与spring的@Transactional或只有jdbc事务? – mmatloka

+0

@mich'DataSourceTransactionManager'(仅限JDBC)。 –

回答

3

有两台的DAO(均基于接口,当然):

public interface GenericDao<T, K extends Serializable> { 
    public T find(K key); 
    public List<T> find(); 
    public K save(T value); 
    public void update(T value); 
    public void delete(T value); 
} 

GenericDao<B>被嘲笑抛出从其保存方法的RuntimeException。你应该看到Spring事务管理器回滚事务。