我正在尝试编写一个集成/单元测试,其中在执行保存后将异常应用于 DAO - 以验证回滚行为。我的想法是创建一个 Spring AOP 方面 - 并将@AfterReturning 建议应用于 DAO 上的“保存”方法。
DAO 已经通过@Transactional 建议代理。
这看起来是正确的方法吗?
到目前为止,我正在尝试使用 Spring ProxyFactory - 在单元测试中代理 DAO。
例如
ProxyFactory pf = new ProxyFactory(new MyFaultInjectingAspect());
pf.setTarget(myDao);
MyDao proxiedDao = (BookmarkDao) pf.getProxy();
谢谢。
最佳答案
从您的数据库端,您可以使用 select for update 发出锁定。
http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
并尝试提交您的应用程序,您应该会看到事务回滚异常,但原因不同。
更新链接。
关于java - 如何测试回滚是否按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139118/