SpringBootTest подключается к базе данных - PullRequest
0 голосов
/ 06 ноября 2018

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

1 Ответ

0 голосов
/ 06 ноября 2018

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

enter image description here

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...