Тест Maven не пройден - Autowire свойства не работает - PullRequest
0 голосов
/ 31 марта 2020

У меня есть приложение с весенней загрузкой, и 'mvn test' не выполняется, поскольку Autowired не работает для чтения значения из файла application.yml.

Файл класса:

@Configuration
public class LogConfig {

    private SettingsRepository settingsRepository;

    @Value("${build.version}")
    private String buildVersion;

    @Value("${build.name}")
    private String buildName;

    public LogConfig(SettingsRepository settingsRepository) {
        this.settingsRepository = settingsRepository;
    }

    @Scheduled(fixedDelay = 5000)
    public void injectDataForLogging() throws SocketException {
        MDC.put("applicationToken", settingsRepository.getToken().isPresent() ? settingsRepository.getToken().get() : "NO-TOKEN");
        MDC.put("macAddressList", MACAddressUtil.getMACAddresses().toString());
        MDC.put("application", buildName);
        MDC.put("applicationVersion", buildVersion);
    }
}

приложение. yml:

build:
  version: @project.version@
  name: @project.artifactId@

pom. xml:

<artifactId>something</artifactId>
<version>2.0.0</version>

Ошибка:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'build.version' in value "${build.version}"

Когда я запускаю приложение, все работает нормально: /

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

В конце концов, я пошел с использованием боба Spring * Build Properties.

До сих пор не уверен, почему это не сработало, но у меня больше нет времени играть с ним: D

0 голосов
/ 31 марта 2020

Так же, как вы передаете pom.xml свойства в ваш main application.yml следующим образом:

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

Вам нужно будет сделать то же самое, чтобы передать эти свойства вашим test ресурсам:

 <build>
    <testResources>
       <testResource>
          <directory>src/test/resources</directory>
              <filtering>true</filtering>
          </testResource>
    </testResources>
 </build>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...