imageview上的Robolectric nullpointer异常

时间:2014-07-03 07:19:30

标签: android 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?

2 个答案:

答案 0 :(得分:1)

因为您使用current创建新的Activity,所以它应该是这样的:

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);

答案 1 :(得分:0)

哦等等。

@Simple Plan之前有一个答案给出了一个提示(不确定为什么你删除了你的答案)。显然在较新版本的robolectric中你只能使用:

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