Конечная точка выключения привода Spring Boot с клиентом Spring RestTemplate: ошибка 415 Неподдерживаемый тип носителя - PullRequest
1 голос
/ 14 июля 2020

Я пытался запустить тесты микросервисов Spring Boot, которые описаны в этой статье: https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/

В этих тестах приложение Spring Boot запускается и останавливается программно до и после каждый тест с использованием конечной точки «выключения» Spring RestTemplate Client и Spring Boot Actuator.

К сожалению, этот код не работает в Spring Boot 2.3.1 и возвращает «Ошибка 415 Unsupported Media Type»

ResponseEntity<JSONObject> response = template
                        .postForEntity(managementUrl + "/shutdown", "", JSONObject.class);

После тестов приложение должно быть убито вручную в консоли администрирования.

Полный исходный код можно найти на GitLab: https://gitlab.com/dfeingol/springboot-testing-tips/-/tree/master/atdd

Это действительно интересная стратегия тестирования и отличная альтернатива использованию Spring Boot Docker Изображения в тестах.

К сожалению, статья и исходный код очень старые и используют Spring Boot 1.4.0

Кто-нибудь знает, как правильно завершить работу приложения Spring Boot 2.3.1, используя конечную точку отключения Spring Boot Actuator и клиент Spring RestTemplate. ?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Вам не хватает HttpHeader, см. Ответ:

POST-запрос через RestTemplate в JSON

Также вам необходимо включить конечную точку и открыть ее через HTTP:

management.endpoints.web.expose=*
management.endpoint.shutdown.enabled=true
0 голосов
/ 14 июля 2020

Спасибо за вашу помощь, Умэ sh Санвал!

У меня сработал следующий код:

  HttpHeaders headers = new HttpHeaders();
  headers.setContentType(MediaType.APPLICATION_JSON);
  HttpEntity<String> entity = new HttpEntity<String>(null, headers);
  ResponseEntity<String> response = template.postForEntity(managementUrl + "/shutdown", entity, String.class);

Мне удалось обновить код из статьи до последней Spring Boot (2.3.1) и Cucumber (6.2.2) и исправили все тесты:

См. Статью о стратегиях тестирования микросервисов Spring Boot: https://blog.codecentric.de/en/2017/02/integration-testing-strategies-spring-boot-microservices-part-2/

См. Полный обновленный код на моем GitHub: https://github.com/skyglass/skyglass-composer/tree/master/springboot-testing-tips

...