私は、ApacheのFluent-hcライブラリ(http://hc.apache.org/httpcomponents-client-ga/fluent-hc/apidocs/org/apache/http/client/fluent/Request.html)からRequest.Postメソッドを使用するメソッドを持つクラスの単体テストを作成しようとしています。メソッド内部の静的呼び出しによるJavaユニットテストの設計
テストスーツを実行するたびに実際のリクエストを送信したくないということは、単体テストの場合であっても統合テストであっても、それほど少なくありません。しかし、私はその周りに自分の道を作る方法を知らない。
私はテストの世界では新しく、何かをテストできない時代の大部分を読んだことのために、クラスのデザインに問題があります。
public class HttpRequestSenderServiceImpl implements RequestSenderService {
@Override
public Response sendRequest(String address, String messageBody) throws IOException {
Request request = Request.Post(address).bodyString(messageBody, ContentType.APPLICATION_JSON);
Response response = request.execute();
return response;
}
}
Iは、テストツールとしてSpringフレームワークとSpringテスト、MockitoとTestNGのを使用しています。私は本当にあなたが正しい方向に、指導することができれば、本当に感謝します。私はちょうどそれを正しい方法でやることを学びたいと思う。
私は問題にいくつかの "解決策"を見つけましたが、すべてPowerMockitoを使用しています。私が読んだことは悪いコーディング方法に変換する静的メソッド、コンストラクタなどをモックできるためです。私がここで避けようとしているものです。
静的メソッドをモックする必要がありますか? – fairtrax
私が知りたいことは、私がそれをする必要がないようにそのクラスをどのように設計できたかということです。同様に、あなたが郵便料金を請求する必要があった場合、どのようにそれをデザインしたでしょうか? – dbncourt
私は静的メソッドを嘲笑はまったく悪いとは思わない。しかし、あなたが本当に避けたいのであれば、これは方法ですか、そのパイはテストしますか?私は、この方法はユニットテストを行う価値はないと思います。なぜなら、内部にビジネスロジックがなく、春のポストコールを「ファサード」するだけだからです。私の意見では、この方法でも統合テストが必要です。 – fairtrax