2

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

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

@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
   }


}
4

3 回答 3

5

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

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

查看官方文档以获取非常深入的详细信息,包括@TransactionConfiguration@BeforeTransaction@AfterTransaction其他功能。

于 2012-08-14T08:06:54.713 回答
4

使用@Before 在任何测试之前启动方法,使用@After 在每次测试之后启动方法。在方法或类上使用@Transactional spring 的注释来启动事务,并使用@Rollback 来回滚事务中完成的所有事情。

@Before   
public void setUp(){
    //set up, before every test method
}

@Transactional
@Test
public void test(){
}

@Rollback
@After
public void tearDown(){
   //tear down after every test method
}

同样的问题也以另一种方式解决

于 2012-08-14T08:10:31.860 回答
1

@Before对必须在每个测试方法之前运行并在每个测试方法之后运行的方法使用注释@After

你可以把这篇文章作为参考。

于 2012-08-14T08:05:45.590 回答