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
}
}
我有很多现有的 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
}
}