如何在JUnit中使用Spring测试服务时回滚数据库事务?
我在测试我的DAO和服务时没有问题,但是当我测试s或s时,我想回滚事务而不影响我的数据库。INSERT
UPDATE
我正在使用我的服务来管理事务。我想知道,是否有可能知道一个事务是否会很好,但是回滚它以防止更改数据库?@Transactional
这是我的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/META-INF/spring.cfg.xml")
@TransactionConfiguration(defaultRollback=true)
public class MyServiceTest extends AbstractJUnit38SpringContextTests {
@Autowired
private MyService myService;
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Test
public void testInsert(){
long id = myService.addPerson( "JUNIT" );
assertNotNull( id );
if( id < 1 ){
fail();
}
}
}
问题是此测试将失败,因为事务已回滚,但插入是可以的!如果我删除,则测试通过,但新记录将入到数据库中。@TransactionConfiguration(defaultRollback=true)
@Test
@Transactional
@Rollback(true)
public void testInsert(){
long id = myService.addPerson( "JUNIT" );
assertNotNull(id);
if( id < 1 ){
fail();
}
}
现在可以正确地测试 pass,但回滚将被忽略,并且记录入到数据库中。显然,我已经用 注释了 myService 中的方法。为什么回滚被忽略?addPerson()
@Transactional