У меня есть собственный класс приложений, MyApplication (extends Application). У меня есть метод getInstance(), который просто возвращает себя, так что я могу получить доступ к контексту приложения из любого места.NullPointerException получение контекста приложения при запуске модульного теста
Я пытаюсь выполнить модульный тест методом, который вызывает MyApplication.getInstance(), но он возвращает null, поэтому мой модульный тест не работает.
Кто-нибудь знает, как это сделать? Или мне нужно просто передать мое приложение Контекст в тестируемый метод, чтобы запустить тест по этому методу.
Вот код:
MyApplication:
public class MyApplication extends Application
{
private static MyApplication sInstance;
public static MyApplication getInstance()
{
return sInstance;
}
@Override
public void onCreate()
{
super.onCreate();
sInstance = this;
}
}
Метод испытания:
public static String getErrorMessage(int httpStatus)
{
// GETTING NULL POINTER EXCEPTION ON THIS LINE
Resources resources = Bakery.getInstance().getApplicationContext().getResources();
// ...
}
Unit Test Класс:
public class ManagerApiTest extends AndroidTestCase
{
public void testGetErrorMessage() throws Exception
{
Resources resources = getContext().getResources();
String messageInternal = ManagerAPI.getErrorMessage(500);
assertEquals(resources.getString(R.string.server_error_internal), messageInternal);
}
}
Вы не инстанцированы частное статическое хлебопекарное sInstance; public static Bakery getInstance() { возвращение sInstance; }, поэтому вызов метода get возвращает null. Вам нужно будет издеваться над этим. – Stultuske
Благодаря @Stultuske, sInstance создается в onCreate(). –
Да, но я не вижу призывного вызова onCreate() – Stultuske