У меня есть тестовый класс:
@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 имеет то же содержимое, которое я указал в поле свойств.)
Как переопределить значение по умолчанию?