powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Test & Profile
5 сообщений из 5, страница 1 из 1
Spring Test & Profile
    #40062102
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть небольшой тест настроенный на
src/main/resources/application-dev.yml

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@SpringBootTest
@ActiveProfiles("dev")
class ApplicationTest {

    @BeforeAll
    public static void setSystemProperty() {
        Properties properties = System.getProperties();
        properties.setProperty("spring.profiles.active", "dev");
    }

}



Мне надо подменить некоторые значения.
Я в итоге создаю
src/test/resources/application-dev.yml

Но после запуска тест сперва считывает значения из
src/test/resources/application-dev.yml

а далее читает из

src/main/resources/application.yml

Как настроить его, чтоб он работал только с application-dev
...
Рейтинг: 0 / 0
Spring Test & Profile
    #40062123
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Ну я делаю просто.
Создаю application-test.yaml и application-prod.yaml

А в application.yaml пишу только

Код: python
1.
2.
3.
spring:
  profiles:
    active: @activatedProperties@
...
Рейтинг: 0 / 0
Spring Test & Profile
    #40062126
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
Как настроить его, чтоб он работал только с application-dev
Это фича, что он мержит основной конфиг, с конфигурацией профиля. Варианта два:
- в профиле указывать все параметры
- сказать ему что у него названия конфига другое, типа:

Код: java
1.
@TestPropertySource(properties = {"spring.config.name=anothername"})
...
Рейтинг: 0 / 0
Spring Test & Profile
    #40063283
Профили в спринге были созданы для подмены бинов. Т.е. в одном случае мы хотим один бин, а в другом - другой. То же самое можно реализовать и с импортами контекстов (нужно правда системные переменные или переменные окружения использовать в импорте). По сути это условие в инициализации контекстов и это плохо . Чем меньше условий, тем меньше неразберихи. Т.е. если есть возможность - лучше не использовать профили.

Сейчас к сожалению их стали использовать повсеместно особо не задумываясь о простоте и понятности. Но твою проблему (переопределение свойств в тестах) можно решить проще - просто в src/test/resources нужно поместить файл с тестовыми свойствами. Его имя должно совпадать с основным файлом из src/main/resources. Это решение работает на уровне classpath & Maven потому как тестовый classpath имеет бОльший приоритет.
...
Рейтинг: 0 / 0
Spring Test & Profile
    #40063329
Ну и так же свойства можно переопределить с помощью:
Код: java
1.
@TestPropertySource(properties = "prop.name=true")

Так мы переопределяем как раз некоторые значения. Вот только имей в виду что если два теста нуждаются в разных свойствах, то спринг контекст будет создаваться тоже дважды, что сильно замедляет сборку.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Test & Profile
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]