java - 如何测试回滚是否按预期工作?

标签 java spring transactions spring-aop

我正在尝试编写一个集成/单元测试,其中在执行保存后将异常应用于 DAO - 以验证回滚行为。我的想法是创建一个 Spring AOP 方面 - 并将@AfterReturning 建议应用于 DAO 上的“保存”方法。

DAO 已经通过@Transactional 建议代理。

这看起来是正确的方法吗?

到目前为止,我正在尝试使用 Spring ProxyFactory - 在单元测试中代理 DAO。

例如

 ProxyFactory pf = new ProxyFactory(new MyFaultInjectingAspect());
 pf.setTarget(myDao);
 MyDao proxiedDao = (BookmarkDao) pf.getProxy();

谢谢。

仅供引用:与此相关 Is it ok to use DataSourceTransactionManager for ORM persistence instead of HibernateTransactionManager?

最佳答案

从您的数据库端,您可以使用 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/

相关文章:

spring - 使用包含下划线的字段使用 Spring Data Elasticsearch 查询 Elasticsearch

java - 如果数据库调用来自多台机器,Spring 事务能否提供必要的互斥

java - 从数据列表中查找项目在 RecyclerView 中的位置

java - 我正在尝试 JNI 如何在 Linux 中设置 java.library.path

Java:将 RSS 提要转换为 HTML

c# - ServiceStack 的 OrmLite 是否支持嵌套事务?如果是这样,如何?

PHP:SQL 准备语句事务无法正常工作。它插入 1 个 SQL 语句,而不是两者

java - 使用 Stanford CoreNLP 情绪分析时输出不正确

spring - AWS Lambda Java 函数 Spring 上下文初始化

java - 如何使用 spring 及其注释自动将多个 bean 注入(inject)到 ArrayList 属性中