JUnit:设置测试类的事务边界

Ash*_*iya 1 java junit spring spring-test junit4

我想在启动任何测试方法之前启动数据库事务,并在运行所有测试结束时回滚所有事务。

怎么办?我应该使用什么注释?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
public class MyTests{

   public void setUp(){
    //Insert temporary data to Database
   }

   @Test
   public void testOne(){
     //Do some DB transactions
   }

   @Test void testTwo(){
     //Do some more DB transactions
   }

   public void tearDown(){
   //Need to rollback all transactions
   }


}
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 5

在Spring中,只需@Transactional在测试用例类上添加注释:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
@Transactional   //CRUCIAL!
public class MyTests{
Run Code Online (Sandbox Code Playgroud)

请查看官方文档非常深入的细节,包括@TransactionConfiguration@BeforeTransaction@AfterTransaction和其他功能。