Test di unità isolare il componente in prova e questo è il motivo per cui vengono spesso utilizzati insieme a Mocks framework come Mockito: perché isolare l'unità dalle loro dipendenze. Si prega di notare ciò che dici riguardo l'API di Android è parzialmente vero, perché ci sono anche Instrumented Unit tests, ovvero La strumentazione fa parte del pacchetto Junit e, e anche le classi che estendono TestCase come la classe AndroidTestCase fa parte del pacchetto Junit ma consente l'uso di A) Context, che puoi chiamare con getContext(), e B) Risorse che fanno parte dell'API Android! Inoltre, tieni presente che AndroidTestCase è una classe base e ci sono molte altre classi abbastanza utili che estendono questa classe. Testano in modo specifico Loader, ContentProvider e persino i Servizi e hanno accesso all'API Android. quindi queste classi forniscono framework di test JUnit e metodi specifici per Android. Ora con Junit4 c'è il ServiceTestRule che si estende direttamente da Object e ti consente di testare più facilmente un servizio, sebbene non sia possibile avviare un Intent direttamente in questa classe.
Strumentazione test sono anche nel pacchetto Junit, ma il controllo delle API di Android è abbastanza totale perché i test di strumentazione sono istanziati nel sistema prima di qualsiasi codice di applicazione viene eseguita, e per testare è necessario aprire il vero applicazione (emulatore o telefono collegato con USB).Accedono ai componenti Android (ad esempio facendo clic su un pulsante) e al ciclo di vita dell'applicazione, di solito sono più lenti dei test di Junit che estendono TestCase (quelli esaminati sopra) l'uso tipico è con ActivityInstrumentationTestCase2 che ha un approccio di test funzionale, più orientato all'utente.
MODIFICA: Riguardo a Roboelectric e Mockito, che sono insieme a Espresso tra i più popolari framework di test al momento (13 luglio 2016), Roboelectric consente di eseguire più test in pochi secondi anziché minuti, e questo è davvero utile in team che devono eseguire test continui e sono soggetti a continua integrazione.
Dal sito di Robolectric:
Un approccio alternativo alla Robolectric è quello di utilizzare framework finte quali Mockito o per deridere lo SDK di Android. Anche se questo è un approccio valido , spesso produce test che sono essenzialmente inversioni del implementazioni del codice dell'applicazione. Roboelectric consente uno stile di prova più vicino al test della scatola nera, rendendo i test più efficaci per il refactoring e consentendo ai test di concentrarsi sul comportamento dell'applicazione anziché sull'implementazione dello di Android. Puoi comunque utilizzare una struttura di simulazione lungo lo con Robolectric se lo desideri.
Mockito che può essere utilizzato anche con Junit, viene utilizzato con l'eccezione di quando è necessario gestire classi finali, classi anonime o tipi primitivi.