org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8080/v1/apc"

huangapple go评论139阅读模式
英文:

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8080/v1/apc"

问题

当我运行测试时,我得到了以下异常信息:

  1. org.springframework.web.client.ResourceAccessException: GET请求“http://localhost:8080/v1/apc”时发生I/O错误:连接到localhost:8080 [localhost/127.0.0.1、localhost/0:0:0:0:0:0:0:1] 失败:拒绝连接:连接;嵌套异常是org.apache.http.conn.HttpHostConnectException:连接到localhost:8080 [localhost/127.0.0.1、localhost/0:0:0:0:0:0:0:1] 失败:拒绝连接:连接
  2. at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785)
  3. ...
  4. Caused by: org.apache.http.conn.HttpHostConnectException: 连接到localhost:8080 [localhost/127.0.0.1localhost/0:0:0:0:0:0:0:1] 失败:拒绝连接:连接
  5. at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
  6. ...
  7. Caused by: java.net.ConnectException: 拒绝连接:连接
  8. at java.net.DualStackPlainSocketImpl.connect0(Native Method)
  9. ...

有人可以帮助我找出问题可能是什么吗?

英文:

I have a controller Test class like following

  1. @ExtendWith(SpringExtension.class)
  2. @ContextConfiguration(classes = {ApiController.class,TableService.class, CommonService.class},
  3. loader = AnnotationConfigContextLoader.class)
  4. @TestPropertySource(locations = {"classpath:properties/test/application-test.properties"})
  5. @ActiveProfiles(profiles = "test")
  6. @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
  7. public class ApiControllerTest {
  8. @Autowired
  9. private TestRestTemplate testRestTemplate;
  10. @Test
  11. public void successTypeHttp200Ok() throws JsonParseException, JsonMappingException, IOException {
  12. ResponseEntity<String> response = testRestTemplate.
  13. getForEntity("/v1/apc?name=test", String.class);
  14. }
  15. }

When I run the test I am getting the following exception

  1. org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8080/v1/apc": Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
  2. at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785)
  3. at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
  4. at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:361)
  5. at org.springframework.boot.test.web.client.TestRestTemplate.getForEntity(TestRestTemplate.java:231)
  6. at com.esrx.services.pacRulesEngine.api.RulesApiControllerTest.emptyValueStateCodeBadRequestHttp400Error(RulesApiControllerTest.java:115)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  8. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  9. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  10. at java.lang.reflect.Method.invoke(Method.java:498)
  11. at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
  12. at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
  13. at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
  14. at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
  15. at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
  16. at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
  17. at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
  18. at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
  19. at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
  20. at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
  21. at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
  22. at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
  23. at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
  24. at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
  25. at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
  26. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  27. at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
  28. at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
  29. at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
  30. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
  31. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  32. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
  33. at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
  34. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
  35. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  36. at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
  37. at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
  38. at java.util.ArrayList.forEach(ArrayList.java:1249)
  39. at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
  40. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
  41. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  42. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
  43. at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
  44. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
  45. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  46. at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
  47. at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
  48. at java.util.ArrayList.forEach(ArrayList.java:1249)
  49. at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
  50. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
  51. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  52. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
  53. at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
  54. at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
  55. at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  56. at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
  57. at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
  58. at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
  59. at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
  60. at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
  61. at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
  62. at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
  63. at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
  64. at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
  65. at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
  66. at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
  67. at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
  68. at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
  69. at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
  70. at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
  71. at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
  72. at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
  73. at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
  74. Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
  75. at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156)
  76. at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
  77. at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
  78. at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
  79. at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
  80. at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
  81. at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
  82. at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
  83. at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
  84. at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
  85. at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:87)
  86. at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
  87. at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:66)
  88. at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:776)
  89. ... 71 more
  90. Caused by: java.net.ConnectException: Connection refused: connect
  91. at java.net.DualStackPlainSocketImpl.connect0(Native Method)
  92. at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
  93. at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  94. at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  95. at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
  96. at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
  97. at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
  98. at java.net.Socket.connect(Socket.java:589)
  99. at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
  100. at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
  101. ... 84 more

Can someone help me out what could be the issue?

答案1

得分: 1

测试似乎编写得很好,但我认为有一件事是错误的。尝试删除@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)行中的WebEnvironment.DEFINED_PORT,然后重新运行你的测试。默认情况下,将使用WebEnvironment.MOCK

实际上,你的测试不应该绑定到特定的端口,因为当测试运行时,同一端口可能正在运行另一个应用程序,这可能会在将来引发一些问题。

如果不起作用,请告诉我。

英文:

The test seems to be written well, but one thing, I suppose, is wrong. Try to delete WebEnvironment.DEFINED_PORT in the line @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) and rerun your test. By default, WebEnvironment.MOCK will be used.

Actually your tests should not be bounded to specific ports because when tests are being ran another application may be running on the same port and this can cause some problems in the future.

Let me know if it doesn't work.

huangapple
  • 本文由 发表于 2023年7月24日 16:36:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/76752718.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定