获取NullPointerException使用Robolectric对Android活动进行单元测试

时间:2012-10-31 22:03:25

标签: android junit robolectric

我正在开发一个包含多个Activity类的Android应用。我正在使用Robolectric进行单元测试。在测试设置中,我在被测试的Activity中调用onCreate(null):

@Before
public void setUp() throws Exception {
    activity = new StartARound();
    activity.onCreate(null);
    btnSelectCourse = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnSelectCourse);
    btnAddACourse = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnAddACourse);
    btnShowLocation = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnShowLocation);
    textView1 = (TextView) activity.findViewById(com.catalyst.golfapp.R.id.textView1);
}

问题是,我正在测试的Activity的onCreate方法调用:

getActionBar().setDisplayHomeAsUpEnabled(true);

执行此行代码会产生java.lang.NullPointerException错误,并且测试不会运行。您想要检查的任何想法或其他代码?

2 个答案:

答案 0 :(得分:0)

最新版本的Robolectric中未实现

getActionBar()

这是ShadowActivity的源文件: https://github.com/pivotal/robolectric/blob/master/src/main/java/com/xtremelabs/robolectric/shadows/ShadowActivity.java

此API可用于查看何时使用robolectric中不存在的函数: http://pivotal.github.com/robolectric/javadoc/com/xtremelabs/robolectric/Robolectric.html#logMissingInvokedShadowMethods()

答案 1 :(得分:0)

顺便说一句,建议不要使用getActionBar()。而是使用包含较新操作栏的Android-AppCompat-v7。您可以使用getSupportActionBar()

获取它