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 '

Ответы на вопрос(2)

Ваш ответ на вопрос