Как заново создать базу данных перед каждым тестом в Spring?

Мое приложение 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 и подсистемы автоматически воссоздают базу данных при каждом запуске веб-приложения. База данных воссоздается именно при запуске системы, в то время как она содержит данные после завершения приложения.

Я не понимал эти значения по умолчанию и ожидал, что это подходит для испытаний.

Но когда я начал выполнять тесты, я обнаружил, что база данных воссоздается только один раз. Поскольку тесты выполняются не в заранее заданном порядке, это вообще бессмысленно.

Итак, вопрос в следующем:как иметь смысл? То есть как заставить базу данных воссоздавать перед каждым тестом, как это происходит при первом запуске приложения?

Мой заголовок тестового класса выглядит следующим образом:

@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, Зачем?

Ответы на вопрос(5)

Ваш ответ на вопрос