如何在春季每次测试前重新创建数据库?
我的 Spring-Boot-Mvc-Web 应用程序在文件中具有以下数据库配置:application.properties
spring.datasource.url=jdbc:h2:tcp://localhost/~/pdk
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
这是我唯一的配置。没有我在任何地方进行的任何其他配置。尽管如此,Spring和子系统在每个Web应用程序运行时都会自动重新创建数据库。数据库是在系统运行时重新创建的,而在应用程序结束后它包含数据。
我不理解这个默认值,并期望这适合测试。
但是当我开始运行测试时,我发现数据库只被重新创建一次。由于测试不是以预定义的顺序执行的,因此这毫无意义。
所以,问题是:如何有意义?即如何在每次测试之前重新创建数据库,就像在应用程序首次启动时发生的那样?
我的测试类标头如下:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = myapp.class)
//@WebAppConfiguration
@WebIntegrationTest
@DirtiesContext
public class WebControllersTest {
如您所见,我在课堂上尝试过,但没有帮助。@DirtiesContext
更新
我有一个豆子
@Service
public class DatabaseService implements InitializingBean {
它有一个方法
@Override
@Transactional()
public void afterPropertiesSet() throws Exception {
log.info("Bootstrapping data...");
User user = createRootUser();
if(populateDemo) {
populateDemos();
}
log.info("...Bootstrapping completed");
}
现在我制作了从数据库中清除所有数据的方法。不幸的是,尽管.为什么?populateDemos()
@DirtiesContext