Aggiornamento 2015/10
Ora è possibile tramite l'AndroidJUnitRunner, che fa parte del Android Testing Support Library. In breve, è necessario eseguire le seguenti operazioni in un progetto Gradle-based:
Aggiungi le dipendenze:
dependencies {
compile 'com.android.support:support-annotations:22.2.0'
androidTestCompile 'com.android.support.test:runner:0.4.1'
}
Specificare il testInstrumentationRunner:
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
annotare il test classe con @RunWith(AndroidJUnit4.class)
.
- Scrivi i tuoi test in stile JUnit4 normale.
Vedere anche Espresso setup instructions. Si noti che non è necessario l'Espresso stesso per i normali test di JUnit4.
Perché ce n'è bisogno
ci sono pochissime informazioni che ho trovato su internet su questo argomento. La cosa migliore che ho trovato sono le informazioni su InstrumentationTestRunner.
Non c'è nulla che impedisca ai test di JUnit4 di girare su un dispositivo Android come qualsiasi altro codice Java. Tuttavia, il framework di test Android esegue alcuni lavori aggiuntivi:
- Invia i risultati del test al computer di sviluppo tramite ADB.
- Fa strumentazione (non sono sicuro di cosa si tratti esattamente).
Quanto sopra viene eseguito da alcune estensioni appositamente per JUnit3.
Questo codice specifico di JUnit3 sembra essere parte di InstrumentationTestRunner che fa parte del sistema Android principale. Tuttavia, come è evidente con AndroidJUnitRunner, è possibile utilizzare un programma di test personalizzato che supporti JUnit4 o altri framework.
Hai visto questa domanda? Forse è quello che stai cercando: http://stackoverflow.com/questions/2172152/cant-run-junit-4-test-case-in-eclipse – bsimic
grazie, ma in realtà non sto cercando questa soluzione. Ovviamente usando questa soluzione è possibile testare POJO con JUnit 4. Ma è impossibile usarlo per le unità di codice che fanno affidamento su classi di framework Android (cioè sono in esecuzione sul dispositivo stesso e non sulla JVM sul mio computer di sviluppo) Sono abbastanza sicuro che è quasi impossibile eseguire i test JUnit 4 nel DVM, ma sto cercando una spiegazione PERCHÉ questo è il caso. – Matthew
Non so perché sia il caso, a parte il fatto che le implementazioni di testing delle unità Android estendono le librerie JUnit3. Sono sicuro che le versioni future del kit di sviluppo Android supporteranno 4. – bsimic