クラスがどのように構成されているかという理由で、私はこれに取り組んできました。私は Java の専門家ではありませんが、何日も Google で検索しても役に立たなかったので、参考になるかもしれません。同じ問題が発生しているかどうかはわかりませんが、統合テストで時折「org.apache.http.NoHttpResponseException: ターゲット サーバーが応答しませんでした」が発生し、修正されることを期待してこれをテストしていました。 .
これはおそらく悪いアプローチであり、すべてのエントリ ポイントを網羅しているわけではありませんが、うまくいく可能性があります。
RetryHttpWebConnection というクラスで HttpWebConnection をサブクラス化し、次のオーバーライドを追加します。
@Override
protected AbstractHttpClient createHttpClient() {
AbstractHttpClient client = super.createHttpClient();
// Set it to do some retrying in case of closed connection during test.
client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(5, false));
return client;
}
WebClient をサブクラス化し、サブクラスのコンストラクターでこれを行います。
// Override with new web connection that will do retries
// to avoid test failures due to network issues.
setWebConnection(new RetryHttpWebConnection(this));
編集: http://pastebin.com/nmmRYqKNも調べています。これは、特定の例外に必要なものである可能性があります。