AssertionFailedError в ApplicationTestCase.createApplication () в новых версиях Android при использовании MockContext
Я пишу Android ApplicationTestCase (пример TemperatureConverterApplicationTests, найденный вРуководство по тестированию приложений Android Диего Т. Милано на стр. 171). Пример был написан для Android 2.3, и он некажется, не работает для Android 4. Вы неЯ должен знать книгу, чтобы понять проблему, поскольку я упростил ее.
Это прекрасно работает сAndroid 2.3.3 (API 10):
setContext(new MockContext());
createApplication();
[Чтобы быть точным, UnsupportedOperationException выбрасывается, потому что getPackageName () не реализован. Но это нормально и может быть решено с помощью подкласса MockContext (), который реализует getPackageName () и getSharedPreferences (). Это не актуально, потому что проблема все еще существует даже после этого.]
Проблема в том, что сAndroid 4.1.2 (API 16) это не работает. Я получаю AssertionFailedError, которая в результате некоторой отладки, которую я обнаружил, произошла из-за исключения ClassCastException, выдаваемого в строке 100 ApplicationTestCase.
mApplication = (T) Instrumentation.newApplication(mApplicationClass, getContext());
ClassCastException сообщение:
java.lang.ClassCastException: android.test.mock.MockContext cannot be cast to android.app.ContextImpl
Любые предложения, почему это происходит и как этого можно избежать?
РЕДАКТИРОВАТЬ: Связанный вопрос:Android ApplicationTestCase с использованием MockContextI '