我想在我的应用服务中测试事务回滚。因此,我不想将spring AbstractTransactionalJUnit4SpringContextTests
与@Transactional
注释一起使用,因为它将我的测试方法包装在事务中。
我知道spring还为没有事务的测试提供了AbstractJUnit4SpringContextTests
。但是,我需要进行一些事务来将数据保存到我的数据库中,并在运行被测服务之后查询断言数据。
如何在没有默认事务测试管理的情况下编写Junit 4 spring事务测试?
答案 0 :(得分:3)
以下是您问题的答案;
@ContextConfiguration(value = "/applicationContext.xml")
public class JPASpringTest extends AbstractJUnit4SpringContextTests {
@PersistenceContext(unitName="jpadenemelocal")
EntityManager entityManager;
@Autowired
protected PlatformTransactionManager transactionManager;
@Test
public void testInsertRolManyToMany() {
TransactionStatus status = transactionManager.getTransaction(null);
// your code
transactionManager.commit(status);
}
}
答案 1 :(得分:1)
春季文档应该在testing chapter
中涵盖这一点您可能需要的是在没有默认TransactionalTestExecutionListener的情况下配置您的测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class})
public class SimpleTest {
@Test
public void testMethod() {
// execute test logic...
}
}