Интеграционные тесты не могут подключиться, ручной тест браузера успешно выполняется с помощью веб-службы Java RESTful с тестом интеграции SpringBoot / Jsoup - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь запустить пример кода из этой книги: Создание веб-служб RESTful с помощью Spring 5 - Second Edition .Вы можете скачать образец кода бесплатно.В главе 7 у них есть некоторый пример кода, который включает в себя некоторые интеграционные и модульные тесты в одном каталоге "chapter7 \ ticketmanagement / src / test / java / com / packtpub / restapp / ticketmanagement /".Модульные тесты работают нормально.Интеграционные тесты завершаются неудачно с "testUsersJsoup (com.packtpub.restapp.ticketmanagement.JsoupUserTest) Прошло время: 1,011 сек <<< ОШИБКА! Java.net.ConnectException: соединение отклонено: connect" </p>

Я экспериментировал с изменениемпорт с 8080 до 9090 в "ticket-management \ src \ main \ resources \ application.properties" (я также изменил жестко заданные значения в интеграционном тесте), и это не помогло.

Так что "mvn test"выдает вышеуказанную ошибку.Так же как и запуск их в наборе инструментов Spring.Я отредактировал оригинальный файл pom.xml и добавил «maven-compiler-plugin», чтобы указать версию Java 1.8.Я использую Windows 10.

Итак, код ошибки находится в "главе 7 \ ticket-management \ src \ test \ java \ com \ packtpub \ restapp \ ticketmanagement \ JsoupUserTest.java".

Вот код ошибки:

public void testUsersJsoup() throws IOException {

    String doc = Jsoup.connect("http://localhost:9090/user").ignoreContentType(true).get().body().text();

    _log.info("{test} doc : " + doc);

    JsonParser parser = new JsonParser();
    JsonElement userElement = parser.parse(doc);
    JsonArray userArray = userElement.getAsJsonArray();

    _log.info("{test} size : " + userArray.size());

    assertEquals(4, userArray.size());
}

ОДНАКО, когда я набираю

mvn spring-boot:run

, он запускается успешно, и я указываю свой браузер Chrome на http://localhost:9090/user (или http://localhost:8080/user, если я использую оригинальный код) Я вижу

[{"userid":100,"username":"David"},{"userid":101,"username":"Peter"},{"userid":102,"username":"John"}]

Нет ошибки подключения!Результаты выглядят корректно.

  1. Мы знаем, что это не проблема брандмауэра, потому что это просто с localhost и работает с chrome.
  2. Не задействован прокси.
  3. Я думаю, что порты верны: у меня в настоящее время 9090 в файле application.properities, а также в исходном коде и в браузере.
  4. "mvn clean", а затем "mvn test" снова не помогли.

1 Ответ

0 голосов
/ 20 ноября 2018

Есть аннотации для запуска веб-приложения, как показано здесь: Spring Live Lessons Tutorial и они работают. См.% JAVA_BUILDINGMICROSERVICES% \ livelessons-security \ livelessons-security-basic \ src \ test \ java \ basic \ BasicSecurityApplicationTests.java.

Эти аннотации устарели и заменены более новыми. Проблема в том, что автор этого учебника неправильно использует эти новые аннотации: ему также необходимо использовать @WebAppConfiguration, а для этого требуются некоторые аргументы конфигурации из @SpringBootTest (которого он отсутствует). Для этого необходимо вручную запустить веб-сервер с помощью «mvn spring-boot: run» в отдельном процессе, а затем запустить тесты.

Когда я пытался использовать @WebAppConfiguation, у меня появлялись другие ошибки. Я документирую эти ошибки в другом посте (когда-нибудь).

...