Spring 测试结束时 Junit 数据库回滚 class

Spring Junit Database rollback at the end of test class

我有很多现有的 Spring JUnit 测试。 所有这些测试都扩展了一个抽象测试 class。 public class ServiceTest extends AbstractServiceTest { 但是在这个摘要中 class 我们重新初始化了数据库。所以它会在每次测试时重新初始化数据库 class

@Before
@Override
public void initGlobal() throws Exception {
    initDatabase();
    ... }

我想问如何在测试执行结束时对测试 class 进行回滚?所以我可以一次性初始化数据库并在每次测试中回滚更改 class

我认为拥有两个配置文件是一个更好的选择,一个用于测试,另一个用于开发,在测试配置文件上使用基于内存的数据库,如 H2(here 是一个很好的例子),在你的开发配置文件上使用你的主数据库

当 运行ning 测试使用测试 profile.Instead 时,每次 运行 您的测试

都会回滚或删除数据

如果你想在我完全不鼓励的单元测试中使用真实的数据库 it.You 可以使用 spring 测试 运行ner 来注释你的 class 和回滚交易

@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(defaultRollback=true)
public class YourTestClass {

    @Test
    @Transactional
    public void myTestMethod() {
        // db will get rolled back at the end of the test
    }
}