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是正确的,我已经被咬过几次了。