集成测试无法连接,手动浏览器测试通过带有SpringBoot / Jsoup集成测试的Java RESTful Web服务成功

时间:2018-11-15 17:08:47

标签: java rest spring-boot integration-testing

我正在尝试运行本书中的示例代码:Building RESTful Web Services with 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“

我尝试在“ ticket-management \ src \ main \ resources \ application.properties”中将端口从8080更改为9090(我还更改了集成测试中的硬编码值),但这没有帮助。

因此,“ MVN测试”会产生上述错误。 在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

它成功启动,我将镶边浏览器指向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. 我认为端口是正确的:目前在application.properities文件,源代码和浏览器中有9090。
  4. “将mvn清除”,然后再次进行“ mvn测试”并没有帮助。

1 个答案:

答案 0 :(得分:0)

有一些注释可以启动Web应用程序,如下所示: Spring Live Lessons Tutorial,它们就会起作用。参见%JAVA_BUILDINGMICROSERVICES%\ livelessons-security \ livelessons-security-basic \ src \ test \ java \ basic \ BasicSecurityApplicationTests.java。

这些注释已被弃用,并被更新的注释所取代。问题在于,本教程的作者未正确使用这些新注释:他还需要使用@WebAppConfiguration,这需要@SpringBootTest中的一些配置参数(他丢失了)。因此,有必要在单独的过程中使用“ mvn spring-boot:run”手动启动Web服务器,然后运行测试。

当我尝试使用@WebAppConfiguation时,出现了其他错误。我将在另一篇文章中(某天)记录这些错误。