我希望在启动任何测试方法之前启动数据库事务,并在运行所有测试结束时回滚所有事务。
如何做事?我应该使用哪些注释?
@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
}
}
答案 0 :(得分:4)
在Spring中,只需在测试用例类中添加@Transactional
注释:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/testApplicationContext.xml"})
@Transactional //CRUCIAL!
public class MyTests{
查看official documentation以获取非常详尽的详细信息,包括@TransactionConfiguration
,@BeforeTransaction
,@AfterTransaction
和其他功能。
答案 1 :(得分:3)
在任何测试之前使用@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
}
答案 2 :(得分:1)
将注释@Before
用于必须在每个测试方法之前运行的方法,并在每个测试方法之后运行@After
。
您可以将this article作为参考。