2014-07-03 41 views
0

我正在嘗試在ROBOLECTRIC中編寫一個簡單的單元測試。當我嘗試這樣做:圖像視圖上的Robolectric空指針異常

ImageView im = new ImageView(new Activity()); 

我得到一個錯誤:

java.lang.NullPointerException 
    at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:146) 
    at android.view.View.__constructor__(View.java:3269) 
    at android.view.View.<init>(View.java:3252) 
    at android.widget.ImageView.<init>(ImageView.java:112) 

是怎麼回事? getApplicationInfo如何返回null?

回答

1

因爲要創建新的活動,而不是使用電流,它應該是這樣的:

ImageView im = new ImageView(this); 

ImageView im = new ImageView(MyActivity.this); 

ImageView im = new ImageView(getApplication()); 

獲取活動實例從robolectric/RobolectricSample

Activity activity = Robolectric.buildActivity(Activity.class).create().get(); 

因此,這將是:

ImageView im = new ImageView(activity); 
+0

確定您正在使用Robolectric?你怎麼得到一個活動參考? –

+0

感謝您的更新,但是您給出的正是最初嘗試的內容,這就是我得到空指針的原因(這就是爲什麼我很好奇) –

+0

如果您不相信我,請自己嘗試 –

0

哦,等等。

@Simple Plan早些時候給出了一個提示(不知道爲什麼你刪除了你的答案)的答案。顯然在較新版本的robolectric中,您只能使用:

Context context = Robolectric.getShadowApplication().getApplicationContext(); 
    mSubject = new ImageView(context, mock(AttributeSet.class));