2014-12-18 1 views
4

Я разработка Android приложений, и мне интересно, как единичные протестировать активности или службы с использованием GoogleApiClient.как модульное тестирование в активность с помощью Google-API-клиентом

Например, как тестировать активность или службы в случае GooglePlayService доступен и в случае недоступности? Я думал об использовании Mockito, но так как GoogleApiClient был создан изнутри Деятельность, нет никакого способа издеваться над этим (AFAIK).

public class MyService extends Service { 
... 
private GoogleApiClient googleApiClient; 
... 
@Override 
public void onCreate() { 
    ... 
    googleApiClient = new GoogleApiClient.Builder(this) ... .build(); 
    ... 
} 
... 
private void doSomething() { 
    if(googleApiClient.isConnected) { 
     ... 
    } 
} 

Более того, я прочитал, что насмешливый библиотеку третьей стороны не должно быть сделано, потому что мой тестовый пакет не будет ошибкой, если библиотека обновляется, но как я могу сделать иначе?

PS: Я уверен, что этот вопрос был задан раньше, но я не мог найти хорошие ключевые слова:/

ответ

1

Вам нужно насмешливый. Но ...

(...), так как GoogleApiClient инстанциируется внутри деятельности

Это, как вы уже заметили, поражения цели насмешливый и является потенциальной точкой улучшения. Создание внешних служб должно происходить либо через factory (что можно легко обмануть), либо через dependency injection container и передается классу как таковому (что снова можно легко насмехаться).

Кроме того, я читал, что издевательство над третьей стороной библиотеки не должно быть сделано, потому что мой набор тестов не будет терпеть неудачу, если библиотека будет обновлена, но как я могу сделать иначе?

Это довольно странное требование. Вы, по крайней мере, должны иметь интеграционные тесты, выполняющие более широкий спектр тестирования компонентов, в которых будут использоваться фактические сторонние библиотеки. В модульном тесте вы mock зависимостей (любые зависимости) для тестирования в изоляции и фокусировки на единица.

+0

Благодаря вашему ответу я обнаружил _Dagger_ (каркас DI), который идеально подходит для моих нужд. –

+3

@ AnthineFontaine вы на самом деле вводили «GoogleApiClient» с помощью кинжала? Как ты сделал это? Я зациклился на том, как регистрировать обратные вызовы ... –

+0

К сожалению, я не помню, как я это сделал, это был небольшой личный проект по изучению Android, и я потерял источники –

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