1

APIcalls.java クラスであるアプリケーションの主要部分の単体テストを作成したいと考えています。Androidでこれらの種類のリクエストをテストすることは可能ですか? API の get メソッドを呼び出すたびにエラーが発生し、サーバーから何も取得されないためです。get メソッドは次のとおりです。

StringBuilder sb = new StringBuilder();

try {

httpclient = new DefaultHttpClient(); 
Httpget httpget = new HttpGet(url);

HttpEntity entity = null;
try {
  HttpResponse response = httpclient.execute(httpget);
  entity = response.getEntity();
} catch (Exception e) {
  Log.d("Exception", e);
}


if (entity != null) {
  InputStream is = null;
  is = entity.getContent();

try {
  BufferedReader reader = new BufferedReader(new InputStreamReader(is));

  while ((line = reader.readLine()) != null) {
   sb.append(line + "\n");
 }
  reader.close();
} catch (IOException e) {

       throw e;

   } catch (RuntimeException e) {

       httpget.abort();
        throw e;

   } finally {

     is.close();

   }
   httpclient.getConnectionManager().shutdown();
  }
} catch (Exception e) {
Log.d("Exception", e);
}

String result = sb.toString().trim();

return result;

サーバーから受信しているデータの種類をテストすることは何とか可能ですか?

4

1 に答える 1

0

単体テストには、ネットワーク アクセスはありません (実際には必要ありません)。依存性注入とMockitoのようなモック フレームワークを使用して、単純に機能すると想定できる部分をシミュレートする必要があります。モック フレームワークを使用して、成功と失敗の両方の応答を確実にテストします。実稼働環境で予想されるできるだけ多くのタイプのケースをカバーするようにしてください。

具体的には、この場合、AbstractHttpClient を注入することができます。次に、execute() メソッドをモックして、テストごとに必要な応答を正確に返すことができますが、本番環境では DefaultHttpClient を提供します。

于 2013-09-17T15:07:29.677 に答える