Springboot - application-integration.properties, работающий под src / main / resources, но не под src / test / resources

Небольшой вопрос относительно профиля Spring (интеграции), применяемого к Springboot, пожалуйста.

В настоящее время в src / main / resources у меня есть несколько файлов application.properties. Такие как:

  • свойства приложения
  • application-local.properties
  • application-production.properties
  • application-integration.prorperties

И в src / test / resources нет файла свойств.

Когда я запускаю maven, maven запускает некоторые модульные и интеграционные тесты. Модульному тесту не нужен какой-либо конкретный профиль (свойства задаются в модульных тестах, во всяком случае, это не вопрос).

Интеграционные тесты, им нужен application-integration.properties. А сейчас с файлом в src / main / resources все в порядке.

Я просто попытался переместить файл в src / test / resources, и тесты интеграции не смогли найти никаких свойств, как будто файл исчез.

Как правильно указать Springboot запускать интеграционные тесты с application-integration.properties в src / test / resrouces, пожалуйста?

Спасибо


person PatPatPat    schedule 18.01.2021    source источник
comment
Spring Boot ничего не знает о src / test / resources или src / main / resources. Вместо этого он загружает файлы, используя путь к классам. Ваша система сборки или IDE должна гарантировать, что файлы, находящиеся в src / main / resources или src / test / resources, находятся в пути к классам, и похоже, что в данном случае этого не происходит. Возможные причины этого будут зависеть от системы сборки или IDE, которую вы используете, и от того, как вы выполняете свои тесты.   -  person Andy Wilkinson    schedule 18.01.2021
comment
Понял. В настоящее время я использую Maven как часть работы Jenkins, без использования IDE. Есть ли способ просто сказать: эй, когда вы запускаете интеграционные тесты, посмотрите application-integration.properties, которое находится в / src / test / resources?   -  person PatPatPat    schedule 20.01.2021
comment
Ваш вопрос не совсем ясен. Я предлагаю вам предоставить фрагмент кода, чтобы уточнить ваш вопрос. В любом случае, если все, что вы хотите сделать, это ввести Value в свойство компонента, вам не нужен контекст Spring, в таком тесте можно сказать, что у вас есть класс службы @Service public class MyService {@Value ($ {my.super.property}) String свойство ; общедоступная строка doSomething () {свойство возврата; }} И вы хотите написать тест (скажем, модульный тест) и хотите ввести значение в поле своего свойства.   -  person soung    schedule 12.02.2021
comment
Вы можете использовать ReflectionTestUtils   -  person soung    schedule 12.02.2021
comment
Привет, сунг, я считаю, что мой вопрос был достаточно ясным, Шри уже дал правильный ответ   -  person PatPatPat    schedule 12.02.2021


Ответы (1)


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

@TestPropertySource(locations = "classpath:application-integration.properties")
@ActiveProfiles("integration")
person Sri    schedule 12.02.2021