Android Robolectric:actionBar.hide()返回Null
我是Android单元测试新手,我使用Robolectric作为测试框架。我使用机器人分子2.2 我试着测试一个类似这样的活动: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_
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(查看),并且已被删除。