如何在没有Spring事务测试支持的情况下编写Junit4测试?

时间:2010-08-18 22:54:53

标签: spring testing junit

我想在我的应用服务中测试事务回滚。因此,我不想将spring AbstractTransactionalJUnit4SpringContextTests@Transactional注释一起使用,因为它将我的测试方法包装在事务中。

我知道spring还为没有事务的测试提供了AbstractJUnit4SpringContextTests。但是,我需要进行一些事务来将数据保存到我的数据库中,并在运行被测服务之后查询断言数据。

如何在没有默认事务测试管理的情况下编写Junit 4 spring事务测试?

2 个答案:

答案 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...
   }
}