Выполнить один и тот же @SpringBootTest с разными свойствами

У меня есть @SpringBootTest, который используется для выполнения интеграционного теста на сервере. В зависимости от конфигурации я хочу, чтобы сервер вел себя по-разному. Сама конфигурация читается beans (scope = singleton) глубоко внутри моей логики приложения, и они читают свойство через аннотацию @Value.

Как я мог выполнить один и тот же тест с разными настройками конфигурации? Я попытался написать разные тестовые классы и аннотировать их с помощью @TestPropertySource (properties = XYZ). Но похоже, что это влияет и на все другие тесты (из-за одноэлементности?). Есть ли способ сбросить свойства после теста?

Чтобы уточнить мою проблему: я хочу настроить свой bean-компонент с другим свойством @Value во время моих тестов, и это значение должно быть действительным только во время этого конкретного выполнения теста.

Спасибо заранее за любые указатели.


person smigfu    schedule 09.03.2018    source источник


Ответы (1)


У меня есть веб-сервис, который подключается к клиенту другого веб-сервиса, используя свойство из config. Как и в любой организации, у нас разные среды. Для тестирования я хотел нажать test env вместо local. Вот как я переопределяю значение свойства по умолчанию только для интеграционного теста. Сделав это, я могу попасть в тестовый env вместо локального env по умолчанию.

@SpringBootTest(value = {"eureka.client.enabled=false", // Don't start Eureka
"com.somepackage.webservicename.client.serviceUrl = http://nodename.envname:26730"})

Надеюсь это поможет!

person mufeez-shaikh    schedule 19.04.2018