我正在使用 apache http 客户端来使用服务,我需要根据超时和响应代码重试请求。为此,我实现了如下代码。如何为超时和响应代码场景的重试逻辑编写 junit 测试。我想以这种方式编写单元测试,当我发送任何 post/get 请求时,如果它返回 429 错误代码响应或任何 TimeOutException 我应该确保重试逻辑正确执行。我不知道如何为重试逻辑编写单元测试。通过谷歌搜索,我找到了以下链接,但它对我没有帮助。
单元测试 DefaultHttpRequestRetryHandler
我正在使用 junit、Mockito 编写单元测试和 PowerMock 来模拟静态方法。
public class GetClient {
private static CloseableHttpClient httpclient;
public static CloseableHttpClient getInstance() {
try {
HttpClientBuilder builder = HttpClients.custom().setMaxConnTotal(3)
.setMaxConnPerRoute(3);
builder.setRetryHandler(retryHandler());
builder.setServiceUnavailableRetryStrategy(new ServiceUnavailableRetryStrategy() {
int waitPeriod = 200;
@Override
public boolean retryRequest(final HttpResponse response, final int executionCount,
final HttpContext context) {
int statusCode = response.getStatusLine().getStatusCode();
return (((statusCode == 429) || (statusCode >= 300 && statusCode <= 399))
&& (executionCount < 3));
}
@Override
public long getRetryInterval() {
return waitPeriod;
}
});
httpclient = builder.build();
} catch (Exception e) {
//handle exception
}
return httpclient;
}
临摹微笑
相关分类