我的目标是使用单元测试在我的应用程序中引发乐观锁定异常。我已经在理论上了解了如何做到这一点。但我在实践中的问题是如何维护两个线程之间的事务?
所以,这就是我到目前为止所做的:
我正在使用 JUnit 测试:
@RunWith(SpringJUnit4ClassRunner.class)
使用 EntityManager org.springframework.orm.jpa.JpaTransactionManager
每个方法都被定义的地方@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
并开始交易entityManager.getTransaction().begin();
并结束于entityManager.getTransaction().rollback());
这在单线程测试中效果很好,可以保存、更新等。
要创建多个线程,我使用 Springs TaskExecutor(类似于这里描述的: Any good Spring threading with a TaskExecutor examples?)
但是我必须做些什么来维护两个线程之间的事务呢?我尝试过使用@Transactional 注释run() 方法之类的东西,但这不起作用。