Вы должны знать, что существует несколько путей к классам, например:
- Путь к классу времени компиляции,
- Путь к классу времени выполнения,
- Тестированиеclasspath.
Когда вы используете <scope>runtime</scope>
, зависимость будет доступна как в classpath времени выполнения в качестве , проверяя classpath , как указано документация :
Эта область указывает, что зависимость не требуется для компиляции, но предназначена для выполнения.Он находится во время выполнения и пути к классам тестов, но не в пути к классам компиляции.
Это означает, что даже когда вы выполняете свои тесты, Postgres все равно будет на вашем пути к классам, если вы используете <scope>runtime</scope>
.
Упомянутое вами решение, предоставив два отдельных application.properties
, является правильным выбором.
В пределах src/main/resources/application.properties
вы можете настроить источник данных следующим образом:
spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
В src/test/resources/application.properties
вы можете настроить источник данных следующим образом:
spring.datasource.url=jdbc:h2:mydatabase
Если вам нужно более детальное управление, вы можете использовать профили Spring.Например, вы можете использовать профиль с именем «testdb», а затем аннотировать ваш тест с помощью @ActiveProfiles("testdb")
.
Теперь вы можете создать файл с именем application-testdb.properties
и добавить свойства, необходимые для настройки теста.базы данных.