У меня есть тест, который тестирует части приложения Spring.
Он использует SpringRunner и аннотацию @SpringBootTest, поэтому запускает полноценный весенний сервер.
Проблема в том, что тест выполняется сервером, у которого нет доступа к базе данных, поэтому я получаю много тайм-аутов соединения, которые замедляют тест.
Проблемы с подключением сами по себе не являются проблемой, поскольку тесты имитируют вызовы базы данных, и поэтому они не полагаются на наличие соединения. Просто тесты идут медленно (и некрасиво) с этим.
Итак, тесты выглядят примерно так:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class DispatcherTest
и он использует этот файл свойств
spring.datasource.url:jdbc:oracle:thin:@100.32.13.32:1521:TEST
spring.datasource.username:sa
spring.datasource.password:password
spring.datasource.driver-class-name:oracle.jdbc.OracleDriver
spring.jpa.database-platform:org.hibernate.dialect.Oracle10gDialect
Я думаю, что проблема в том, что есть много разных репозиториев JPA, которые сканируются вот так
@EnableJpaRepositories("package.*")
Итак, есть ли какой-нибудь необычный способ сказать Spring не подключаться к базе данных, или мне нужно издеваться над каждым классом репозитория JPA?
Может использовать базу данных в памяти для тестирования impls. springboottutorial.com/spring-boot-and-h2-in-memory-database тоже




Вы можете использовать пружинные профили для разделения вашей конфигурации. Что-то вроде этого:
В этом сценарии у меня есть три профиля для разделения каждой конфигурации. Вы можете увидеть документы здесь и здесь.
Чтобы запустить приложение с некоторыми профилями, просто сделайте следующее:
java -Dspring.profiles.active=development -jar yourApplication.jar
В вашем случае вы можете использовать тест профиля для подключения встроенной (например, H2) или другой локальной базы данных для тестирования impls.
(Я не являюсь носителем английского языка, могут быть грамматические ошибки)
Рассмотрите возможность использования пружинного профиля для разделения тестового соединения и «производственного» соединения. См. Документы: docs.spring.io/spring-boot/docs/current/reference/html/…