我有很多现有的Spring JUnit测试。
所有这些测试都扩展了抽象测试类。
data = {};
data = $('form').serialize();
data += "&unique_id="+unique_id;
$.ajax({
type: 'post',
url: '/record/store',
data: data
});
但是在这个抽象类中,我们重新初始化数据库。因此,它将在每个测试类上重新初始化数据库
public class ServiceTest extends AbstractServiceTest {
我问我如何在测试执行结束时对测试类进行回滚?所以我可以初始化一次数据库并回滚每个测试类中的更改
答案 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
}
}