Ошибка теста интеграции с весенней загрузкой: «Не удалось разрешить заполнитель« wiremock.server.port »» в тестах, не требующих Wiremock - PullRequest
0 голосов
/ 22 октября 2019

У меня есть @SpringBootTest, который проверяет загрузку @ConfigurationProperties и его методы. Он находится в test исходном наборе.

И в itest у меня есть интеграционный тест, который использует Wiremock (отправка запросов и использование заглушек в качестве ответа и т. Д.)

Теперь,когда я запускаю gradle test, первый тест завершается неудачно, говоря:

[ENV = local] [productName = app-gateway-api] [2019-10-22T16: 18: 30.994Z] [ОШИБКА] [MSG = [Тестовый работник] osboot.SpringApplication - сбой запуска приложения org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'myController', определенного в файле [E: \ coding \ code \ app \ build \ classes\ java \ main \ com \ app \ controller \ MyController> .class]: неудовлетворенная зависимость выражается через параметр конструктора 0;вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'proxyService': сбой внедрения зависимостей с автопроводкой;вложенное исключение - java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'wiremock.server.port' в значении "http://localhost:${wiremock.server.port}/send"

, которое используется в некоторых внешних свойствах. Значение будет использоваться в itest, но не в test. Но контекст загружает его всегда.

В других проектах, использующих его таким образом, проблем нет. Но, похоже, он загружает все классы и не может найтиWiremock и создайте сервер.

Тест в проблеме:

@SpringBootTest
public class MapperLookupTest {
    ...
}

Зависимость Wiremock уже имеет compile scope:

    compile('com.github.tomakehurst:wiremock-jre8-standalone:2.21.0')
    compile("org.springframework.cloud:spring-cloud-starter-contract-stub-runner")

Я пытался загрузить тольконеобходимые классы с @SpringBootTest(classes = {...}), но это слишком многословно.

Итак, есть ли какой-нибудь простой способ определить контекст для загрузки Wiremock?

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Просто добавьте значение по умолчанию для вашего заполнителя:

${wiremock.server.port:defaultValue}
0 голосов
/ 23 октября 2019

Наконец-то я решил не чтить @Cwrwhaf, извините ... потому что я не хочу оказывать негативное влияние на производственный код;Я просто хочу пройти тест, и любые изменения должны быть ограничены только областью самого теста.

Итак, я сделал:

@SpringBootTest(property = "wiremock.server.port=8080")

И я осознаю тот факт, что онне является идеальным ответом, но оказывает меньшее влияние, чем изменение глобальных настроек wiremock.

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