Spring boot: заполнить h2 db из схемы в test / resources - PullRequest
0 голосов
/ 14 мая 2018

На моем локальном компьютере я загружаю базу данных h2 в памяти, чтобы запустить мое приложение весенней загрузки в безопасной среде, вот свойства:

spring.datasource.url: jdbc:h2:mem:DB_TEST;Mode=Oracle
spring.datasource.platform: h2
spring.jpa.hibernate.ddl-auto: none
spring.datasource.continue-on-error: false
spring.jpa.database-platform: org.hibernate.dialect.Oracle10gDialect

Затем в моем src / main / resources я имеюфайл schema-h2.sql, содержащий мои локальные инициации БД.

Это нормально, но у меня также есть несколько тестов junit, которые я хочу выполнить:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTest {

@Autowired
private MyController controller;

@Test
public void myTest(){
     controller.doSomething();
}

Это также нормально, так каксхема-h2.sql видна.

В любом случае, по моему мнению, было бы лучше поместить схему-h2.sql в src / test / resources, так как она должна использоваться только в моей локальной среде.Это также позволяет maven исключать его из окончательной сборки, и это тоже неплохо.

В любом случае, если я его поставлю, тест продолжит работать ... но основное приложение не работает как schema-h2.sqlне найден!

Как изменить вышеуказанные свойства, чтобы указать, что shema-h2.sql должен быть найден внутри папки test / resources?

Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

Для нормального режима файл свойств помещается в src / main / resources, а для метода тестирования - файл свойств в папке src / test / resources.

При попытке запустить тестовый класс eclipse запускает КАЖДЫЙ файл, заканчивающийся на .sql (и, таким образом, содержащий скрипт для создания таблиц или для вставки данных), который он находит в каталогах src / main / resources и src / test / resources. Поэтому, если вы поместите скрипт-файл schema.sql (содержащий скрипт, который создает таблицу: создайте таблицу ..) в обе папки, вы получите ошибку «таблица уже выходит», если вы дадите ей только одну, тест будет пройди удачно. Если вы поместите файл сценария (который вставляет данные в таблицу) в обе папки, оба сценария будут запущены.

Youa также может использовать @PropertySource("..") в своем хранилище, чтобы сообщить Spring, где найти файл свойств для использования.

...