Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit:为测试类设置事务边界_Java_Spring_Junit_Junit4_Spring Test - Fatal编程技术网

Java JUnit:为测试类设置事务边界

Java JUnit:为测试类设置事务边界,java,spring,junit,junit4,spring-test,Java,Spring,Junit,Junit4,Spring Test,我希望在启动任何测试方法之前启动数据库事务,并在运行所有测试结束时回滚所有事务 怎么做?我应该使用什么注释 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/testApplicationContext.xml"}) public class MyTests{ public void setUp(){ //Insert temporary data to Database

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

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

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


}

对于必须在每个testmethod之前运行的方法,使用注释
@Before
;对于必须在每个testmethod之后运行的方法,使用注释
@Before


您可以作为参考。

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

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

查看非常深入的详细信息,包括
@TransactionConfiguration
@BeforeTransaction
@postertransaction
和其他功能。

在任何测试之前使用@Before-to-launch方法,在每次测试之后使用@After-to-launch方法。在方法或类上使用@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
}

还有。

是的,这是最简单的方法,但通常不鼓励在测试中使用
@Transactional
管理事务。你甚至写过关于这个话题的文章::)我通常使用上面给出的方法,但是@G.demacki是正确的,我已经被咬过几次了。