很多时候我们不希望单元测试的结果玷污了数据库,即执行的测试数据不去修改数据库,只需要告诉我们最终的测试结果即可,那么怎样也让我们的单元测试也具有事务功能呢?
1、方法级别的
在测试方法上添加注解@Rollback(true)。
public class FooServiceTest{
@Autowired
private FooService fooService;
@Test
@Rollback(true)
public void testSaveFoo() {
Foo foo = new Foo();
// ...
long id = fooService.saveFoo(foo);
assertTrue(id > 0);
}
}
2、类级别
在测试类上添加@Transactionnal注解。
public class FooServiceTest extends BaseSpringTestCase{
@Autowired
private FooService fooService;
@Test
// @Rollback(true) 默认就是true
public void testSaveFoo() {
Foo foo = new Foo();
// ...
long id = fooService.saveFoo(foo);
assertTrue(id > 0);
}
}
参考: