Javaでテスト可能なコードを書く方法を学んでいます。単体テストをしたいのであれば、シングルトンクラスを実装するのは素晴らしいとは言いたくないリンクがたくさんあります。だから私は解決しようとしているものです。私は、HTTPリクエスト(HTTPRequestクラス)を送信するクラスを持っています。このクラスは、どのプロトコルを使用するか(TLSv1.2など)を心配してほしい。私はbody、URLなどでHTTPRequestクラスを呼び出す複数のクラスを持っています。シングルトンクラスを使用した依存性注入への移動方法
私が近づけたのは、同じ事の複数のインスタンスを作成する必要がないため、HTTPRequestはシングルトンクラスになることでした。プロジェクト全体のプロトコルは同じで、一度だけ設定する必要があります。
これは私のHTTPRequestの様子です。 1つのオブジェクトのみを使用してのGetRequestが、を呼び出す方法があるHTTPRequestの必要なクラスから今
public class HTTPRequest {
private CloseableHttpClient httpClient;
private HttpGet httpGet;
private HttpPut httpPut;
private HttpPost httpPost;
HTTPRequest(CloseableHttpClient a, HttpGet b, HttpPut c, HttpPost d) {
httpClient = a;
httpGet = b;
httpPut = c;
httpPost = d;
}
public HTTPResponse getRequest(url) {
//Do some processing with httpClient & httpGet to send the request
}
}
?私は依存性注入について何かを読んだが、私はそれをどうやってやるべきか本当に分かりません。
同様にテスト可能にするようにコードを変更する必要がありますか?
コンストラクタのパラメータとして 'HttpGet'、' HttpPut'などを渡すのはなぜですか? – alayor
@alayorまたは私はHttpGetの応答を嘲笑したい。私は実際に私のサーバーにそれを望んでいないので。 – user1692342
しかし、 'getRequest'メソッドで' HttpGet'を渡すことができますか? – alayor