SpringBootTest подключается к базе данных

У меня есть тест, который тестирует части приложения 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?

Рассмотрите возможность использования пружинного профиля для разделения тестового соединения и «производственного» соединения. См. Документы: docs.spring.io/spring-boot/docs/current/reference/html/…

Cristiano Bombazar 06.11.2018 11:27

Может использовать базу данных в памяти для тестирования impls. springboottutorial.com/spring-boot-and-h2-in-memory-database тоже

Darren Forsythe 06.11.2018 11:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
2 059
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать пружинные профили для разделения вашей конфигурации. Что-то вроде этого:

В этом сценарии у меня есть три профиля для разделения каждой конфигурации. Вы можете увидеть документы здесь и здесь.

Чтобы запустить приложение с некоторыми профилями, просто сделайте следующее:

java -Dspring.profiles.active=development -jar yourApplication.jar

В вашем случае вы можете использовать тест профиля для подключения встроенной (например, H2) или другой локальной базы данных для тестирования impls.

(Я не являюсь носителем английского языка, могут быть грамматические ошибки)

Другие вопросы по теме