2015-11-27 12 views
6

Sto cercando un modo per testare un'attività con JUnit4 e ActivityTestRule, ma con una classe di applicazione diversa (ad esempio, mocked o ereditata). Sono stato in grado di ottenere questo per i progetti di libreria utilizzando la fusione e gli strumenti manifest: replace = "android: name" sul tag dell'applicazione in AndroidTest/AndroidManifest.xml. Questo tuttavia non funziona per le applicazioni.Test attività Android con diversa classe di applicazione

Qualche idea su come questo può essere fatto?

risposta

16

È possibile creare una sottoclasse di AndroidJUnitRunner con il proprio corridore e ignorare newApplication() con la classe dell'applicazione personalizzata.

public class CustomTestRunner extends AndroidJUnitRunner { 

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return super.newApplication(cl, CustomTestApplication.class.getName(), context); 
} 
} 

Assicurati di aggiornare il tuo build.gradle con il nuovo corridore come questo:

testInstrumentationRunner "com.mypackage.name.path.CustomTestRunner"

+2

Grazie per la precisazione: testInstrumentationRunner "com.mypackage.name.path.CustomTestRunner". Molti altri tutorial non sono riusciti a farlo. –

+2

Inoltre, se stai eseguendo il test da Android Studio, potrebbe essere necessario aggiornare il 'Strumento di controllo strumentazione specifico' nella configurazione Esegui/Debug per fare riferimento all'equivalente CustomTestRunner. – Max

Problemi correlati