Aggiunto LeakCanary (1.3) alla mia domanda:NullPointerException da LeakCanary durante l'esecuzione di test Robolectric
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
LeakCanary.install(this);
Quando eseguo la suite di test Robolectric per la mia applicazione ottengo un NullPointerException in LeakCanary.
Caused by: java.lang.NullPointerException
at com.squareup.leakcanary.LeakCanary.isInServiceProcess(LeakCanary.java:165)
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:141)
at com.squareup.leakcanary.LeakCanary.install(LeakCanary.java:52)
at com.squareup.leakcanary.LeakCanary.install(LeakCanary.java:43)
at com.package.application.MyApplication.onCreate(MyApplication.java:50)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:131)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:431)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:224)
Ho aggiunto che Im usando Crashlytics a sottolineare che esso (e di altri metodi e) riceve la stessa applicazione, ma non genera alcuna eccezione.
Non ero sicuro se questo dovrebbe essere qui o sui problemi di GitHub per LeakCanary. Qualcun altro ha avuto questo problema?
Date un'occhiata al il codice sorgente di LeakCanary.java, sembra che la HeapAnalyzerService non è in esecuzione durante l'esecuzione dei test. – WenChao
Ignora l'applicazione nei test e sopprime l'inizializzazione di Crashlitics e LeakCanary. Maggiori informazioni qui (http://robolectric.org/custom-test-runner/) –
Grazie! Sono andato con l'opzione di classe dell'applicazione personalizzata. – erafn