AssertionFailedError w ApplicationTestCase.createApplication () w nowszych wersjach Androida przy użyciu MockContext
Piszę Android ApplicationTestCase (przykład TemperatureConverterApplicationTests znaleziony wPrzewodnik testowania aplikacji na Androida Diego T. Milano na stronie 171). Przykład został napisany dla Androida 2.3 i wydaje się, że nie działa dla Androida 4. Nie musisz znać książki, aby zrozumieć problem, ponieważ ja ją uprościłem.
To działa dobrze zAndroid 2.3.3 (API 10):
setContext(new MockContext());
createApplication();
[Dokładnie wyjątek UnsupportedOperationException jest generowany, ponieważ getPackageName () nie jest zaimplementowany. Ale jest to normalne i można je rozwiązać, używając podklasy MockContext (), która implementuje getPackageName () i getSharedPreferences (). Nie jest to istotne, ponieważ problem nadal istnieje nawet po wykonaniu tej czynności.]
Problem polega na tymAndroid 4.1.2 (API 16) to nie działa. Dostaję błąd AssertionFailedError, który dzięki pewnym debugowaniu okazał się być spowodowany wyrzuceniem klasy ClassCastException w linii 100 ApplicationTestCase.
mApplication = (T) Instrumentation.newApplication(mApplicationClass, getContext());
TheClassCastException wiadomość brzmi:
java.lang.ClassCastException: android.test.mock.MockContext cannot be cast to android.app.ContextImpl
Wszelkie sugestie, dlaczego tak się dzieje i jak można tego uniknąć?
EDYCJA: Powiązane pytanie:Android ApplicationTestCase za pomocą MockContext