-3
我有一個自定義應用程序類MyApplication(擴展應用程序)。我有一個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();
// ...
}
的單元測試類:
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() { return sInstance; },所以調用get方法將返回null。你需要嘲笑它。 – Stultuske
謝謝@Stultuske,sInstance在onCreate()中實例化。 –
是的,但我沒有看到onCreate() – Stultuske