创建可见活动Robolectric 2.3时的NPE

时间:2014-10-29 12:28:50

标签: java android unit-testing robolectric

例如,我有两个活动MainActivity和NextStartedActivity。

MainActivity中的onCreate()方法

...
Intent intent = (new Intent(this, NextStartedActivity.class).putExtra("start", 1));
startActivity(intent);

对于MainActivity,此调用正常

activity = Robolectric.buildActivity(MainActivity.class).create().visible().get();

NextStartedActivity中的onCreate()

...
request_status = getIntent().getExtras().getInt("start");
textureView.setSurfaceTextureListener(this);
...

当我对NextStartedActivity使用上面的调用时,我有 java.lang.NullPointerException at NextStartedActivityTest.java:89但是当我使用

activity = Robolectric.buildActivity(NextStartedActivity.class).get();

一切正常。

请让我理解这种方式与不同活动的不同之处。这是否等于setupActivity()?

1 个答案:

答案 0 :(得分:0)

如果NPE正在这条线上发生:

request_status = getIntent().getExtras().getInt("start");

然后问题是你没有在你的代码期望的测试中创建一个意图。尝试这样的事情:

Intent intent = new Intent(Robolectric.getShadowApplication().getApplicationContext(),   
                NextStartedActivity.class); 
intent.putExtra("start", 1);
Robolectric.buildActivity(NextStartedActivity.class).withIntent(intent).create().get();