2013-09-16 2 views
1

Я хочу создать модульные тесты для основной части моего приложения, которое является классом APIcalls.java. Возможно ли в android проверить эти запросы? Поскольку каждый раз, когда я вызываю метод get API, я получаю сообщение об ошибке и ничего не получаю от сервера. Вот метод получения:Тестирование устройства Android

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; 

Можно ли как-то проверить, какие данные я получаю с сервера?

ответ

0

Единичный тест не будет иметь (и действительно не должен) сетевого доступа. Вы должны моделировать части, которые вы можете просто взять на себя, используя dependency injection и насмешливую структуру, такую ​​как Mockito. Используйте насмешливую структуру, чтобы гарантировать, что вы проверяете ответы как на успехи, так и на неудачи. Постарайтесь охватить столько случаев, сколько вы могли бы ожидать в производственной среде.

В частности, в этом случае вам может понадобиться ввести AbstractHttpClient. Затем вы можете издеваться над методом execute(), чтобы вернуть точно ответ, который вам нужен на каждый тест, но предоставить DefaultHttpClient в процессе производства.

Смежные вопросы