如何解决Junit错误-软件导致连接中止:recv failed;嵌套异常是 java.net.SocketException:软件导致连接中止:接收失败
此测试方法单独运行成功,但在将整个测试包作为 junit 测试运行时,此特定测试失败。
@Test
public void testUpdateCommentForLineItemStatusCode200() {
insertDataforRequisition();
insertDataforItems();
requestHeaders.set("Prefer","return=representation");
wiremockRule.stubFor(patch(urlEqualTo(LINEITEM_URL + "Requisitions(ReqId=" + reqID1 + ")/LineItems(LineItemId="
+ lineItem1 + ")/Comments(CommentId=" + commentId1 + ")"))
.willReturn(aResponse().withStatus(200)
.withBody(readResponseFromFile("UpdateCommentForLineItemResponse.json",MOCKDATA_PATH))));
wiremockRule.stubFor(get(urlEqualTo(
LINEITEM_URL + "Requisitions(ReqId=" + reqID1 + ")/LineItems(LineItemId=" + lineItem1 + ")/Comments"))
.willReturn(aResponse().withStatus(200)
.withBody(readResponseFromFile("GetCommentsForLineItemResponse.json",MOCKDATA_PATH))));
httpentity<?> httpentity =
new httpentity<>(readResponseFromFile("UpdateCommentForLineItemRequest.json",MOCKDATA_PATH),requestHeaders);
ResponseEntity<Map> updateCommentResponse = testRestTemplate
.exchange(getURLWithPort(REQUISITION_SERVICE_PATH + "Requisitions(ReqId=" + reqID1 + ")/LineItems(LineItemId="
+ lineItem1 + ")/Comments(CommentId=" + commentId1 + ")"),HttpMethod.PATCH,httpentity,Map.class);
assertEquals(200,updateCommentResponse.getStatusCodeValue());
assertEquals("Hello,good morning",updateCommentResponse.getBody().get("CommentString"));
assertEquals(lineItem1,updateCommentResponse.getBody().get("ParentId"));
}
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on PATCH request for "http://localhost:8080/requisition-lineitem-service-srv/odata/v4/RequisitionLineItemService/Requisitions(ReqId=123e4567-e89b-12d3-a456-426614174000)/LineItems(LineItemId=223e4567-e89b-12d3-a456-426614174000)/Comments(CommentId=5d2193c5-f53d-45af-a6b1-940058f30e4b)": Software caused connection abort: recv Failed; nested exception is java.net.socketException: Software caused connection abort: recv Failed
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:748) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:583) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at com.sap.requisitioning.services.impl.LineItemDelegationImpl.updateLineItemComment(LineItemDelegationImpl.java:457) ~[classes/:?]
at com.sap.requisitioning.handlers.DelegationHandler.updateCommentForLineItem(DelegationHandler.java:1223) ~[classes/:?]
at com.sap.cds.services.impl.handlerregistry.HandlerRegistryTools$DescribedHandler.process(HandlerRegistryTools.java:160) ~[cds-services-impl-1.9.0.jar:?]
at com.sap.cds.services.impl.ServiceImpl.dispatch(ServiceImpl.java:182) ~[cds-services-impl-1.9.0.jar:?]
... 85 more
Caused by: java.net.socketException: Software caused connection abort: recv Failed
at java.net.socketInputStream.socketRead0(Native Method) ~[?:?]
at java.net.socketInputStream.socketRead(SocketInputStream.java:115) ~[?:?]
at java.net.socketInputStream.read(SocketInputStream.java:168) ~[?:?]
at java.net.socketInputStream.read(SocketInputStream.java:140) ~[?:?]
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) ~[httpcore-4.4.13.jar:4.4.13]
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.12.jar:4.5.12]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.12.jar:4.5.12]
at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:87) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:739) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:583) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at com.sap.requisitioning.services.impl.LineItemDelegationImpl.updateLineItemComment(LineItemDelegationImpl.java:457) ~[classes/:?]
at com.sap.requisitioning.handlers.DelegationHandler.updateCommentForLineItem(DelegationHandler.java:1223) ~[classes/:?]
at com.sap.cds.services.impl.handlerregistry.HandlerRegistryTools$DescribedHandler.process(HandlerRegistryTools.java:160) ~[cds-services-impl-1.9.0.jar:?]
at com.sap.cds.services.impl.ServiceImpl.dispatch(ServiceImpl.java:182) ~[cds-services-impl-1.9.0.jar:?]
... 85 more
请在这里给我建议。我们已经通过以下方式定义了我们的wiremock规则:
@ClassRule
public static wiremockRule wiremockRule = new wiremockRule(wiremockConfig().notifier(new ConsoleNotifier(true)));
这个wiremock规则可能是问题吗?之所以问这个是因为有时不同的测试会因为相同的原因而失败,即 I/O 错误和软件导致连接中止:recv 失败
提前致谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。