Spring Junit Database在测试类结束时回滚

时间:2017-07-26 08:14:26

标签: java spring junit4 rollback spring-test

我有很多现有的Spring JUnit测试。 所有这些测试都扩展了抽象测试类。 data = {}; data = $('form').serialize(); data += "&unique_id="+unique_id; $.ajax({ type: 'post', url: '/record/store', data: data }); 但是在这个抽象类中,我们重新初始化数据库。因此,它将在每个测试类上重新初始化数据库

public class ServiceTest extends AbstractServiceTest {

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

1 个答案:

答案 0 :(得分:1)

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

运行测试时使用测试配置文件。而不是每次运行测试时回滚或删除数据

如果你想在单元测试中使用真正的数据库,我完全不鼓励它。你可以使用spring test runner来注释你的类和回滚事务

@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
    }
}