Невозможно отключить hibernate.hbm2ddl.auto в весеннем тесте - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть тестовый класс:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = RepositoryTestConfiguration.class)
public class RepositoryTest {

    @Autowired
    private UserRepository underTest;
}

И класс конфигурации:

@TestConfiguration
@ImportAutoConfiguration(value = HibernateJpaAutoConfiguration.class)
@EnableJpaRepositories(basePackages = "...")
@EntityScan(basePackages = "...")
public class RepositoryTestConfiguration {
    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .build();
    }

    @Bean
    public SpringLiquibase liquibase(
        DataSource dataSource,
        @Value("classpath:database/changelog-master.xml") String changeLogLocation
    ) {
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setChangeLog(changeLogLocation);
        liquibase.setDataSource(dataSource);
        return liquibase;
    }
}

Все работает хорошо, кроме одного: во время инициализации контекста регистрируется исключение (но запуск не завершается с ошибкой):

ohtsiExceptionHandlerLoggedImpl: GenerationTarget обнаружил команду принятия исключения: ошибка при выполнении DDL "отбросить таблицу schema_name.table_name, если существует" через JDB C выражение

Я обнаружил, что это свойство hibernate.hbm2ddl.auto не имеет значения none . Я отладил его, и его значение равно create-drop .

Поэтому я попытался установить значение этой конфигурации равным none , используя @ TestPropertySource аннотация. Но я не мог переопределить первоначальное значение.

Я попытался добавить

@TestPropertySource(locations = "classpath:database.properties", properties = "hibernate.hbm2ddl.auto=none")

к RepositoryTest и RepositoryTestConfiguration , но это не имеет никакого эффекта. (Файл database.properties имеет то же содержимое, которое я указал в поле свойств.)

Как переопределить значение по умолчанию?

...