Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Robolectric:actionBar.hide()返回Null_Android_Junit_Android Actionbar_Actionbarsherlock_Robolectric - Fatal编程技术网

Android Robolectric:actionBar.hide()返回Null

Android Robolectric:actionBar.hide()返回Null,android,junit,android-actionbar,actionbarsherlock,robolectric,Android,Junit,Android Actionbar,Actionbarsherlock,Robolectric,我是Android单元测试新手,我使用Robolectric作为测试框架。我使用机器人分子2.2 我试着测试一个类似这样的活动: public class LoginActivity extends SherlockActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_

我是Android单元测试新手,我使用Robolectric作为测试框架。我使用机器人分子2.2

我试着测试一个类似这样的活动:

public class LoginActivity extends SherlockActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

ActionBar abs = getSupportActionBar();
abs.hide();
}
这是我的测试课:

@RunWith(RobolectricTestRunner.class)
public class LoginActivityTest {

@Before 
public void setUp() throws Exception
{
    System.setProperty("dexmaker.dexcache", "/sdcard");
    activity = Robolectric.buildActivity(LoginActivity.class).create().get();
}

@Test
public void should_loginActivity_created() throws Exception {

    assertNotNull(activity);

}
我得到了这个错误:

java.lang.NullPointerException  
at auth.LoginActivity.onCreate(LoginActivity.java:119)
这一行是指 abs.hide()

注意:我试过了,但没有成功

我还尝试创建ShadowSherlockActivity,如,但我不知道如何使用此shadow类创建活动,如:

activity = Robolectric.buildActivity(LoginActivity.class).create().get();
注2:我尝试使用Robolectric Snapshot 2.3,但没有解决


谢谢。

您是否已在androidmanifest.xml中添加了安卓主题

<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:debuggable="false" android:theme="@style/Theme.Sherlock">


正如@ersentekin和我在评论中指出的那样,这里有一个从@Xian那里得到建议并将其修改为与Robolectric 2.2+一起使用的版本。

是的,没有任何变化。你是否在AndroidManifest.xml文件中全屏显示了你的活动,如果你的意思是:
android:theme=“@android:style/theme.NoTitleBar.Fullscreen”
否,我没有。你应该看看西安的要点。在@Before may中调用ActionBarSherlock.registerImplementationhelp@JustinMuller我尝试了这个要点,但我无法在ActionBarSherlockRobolectric.java中调用setContentView方法,而不是调用
shadowOf(mActivity)。setContentView(contentView)
您可以通过
mActivity.getWindow().setContentView>直接设置
contentView
(查看)
@JustinMuller你完全正确!它如我预期的那样工作。出现此setContentView错误是因为在Robolectric 2中使用Android的real PhoneWindow吗?是的,从Robolectric 2()开始,ShadowActivity不再需要setContentView(查看),并且已被删除。