我觉得我一定错过了一些疯狂的东西。我正在将编写的代码转换为与 ABS 一起使用(并且确实有效),并将其切换为使用本机 ActionBar。我将 min SDK 设置为 14 并为框架版本切换了一些东西,现在我无法让它ActionBar
存在。
我的Activity
:
public class HomeActivity extends Activity {
@Override
protected void onCreate(@CheckForNull Bundle icicle) {
super.onCreate(icicle);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
}
}
我的安卓清单:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/>
...
<activity android:launchMode="singleTop" android:name=".ui.HomeActivity" android:theme="@android:style/Theme.Holo">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data android:name="target device" android:value="universal"/>
</activity>
我的 Robolectric 测试:
@RunWith(RobolectricTestRunner.class)
public class HomeActivityTest {
@Test
public void testActionBarDisplay() {
// Given
final HomeActivity activity_under_testing = new HomeActivity();
// When
activity_under_testing.onCreate(null);
// Then
assertThat(activity_under_testing.getActionBar())
.hasDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
|ActionBar.DISPLAY_SHOW_TITLE
|ActionBar.DISPLAY_USE_LOGO);
}
}
我正在使用 FEST-Android assertThat
(不可能是问题)。
问题:
测试运行:1,失败:1,错误:0,跳过:0,经过的时间:7.563 秒 <<< 失败!testActionBarDisplay(com.imminentmeals.android.base.ui.HomeActivityTest) 经过时间:6.588 秒 <<< 失败!java.lang.AssertionError:期望实际在 com.imminentmeals.android.base.ui.HomeActivityTest.testActionBarDisplay(HomeActivityTest.java:28) 处不为空
我应该补充一点,我正在使用Robolectric 2.0 Alpha 2。我跳过了测试,打包了我的 apk,ActionBar
似乎工作正常,所以我觉得这一定是 Robolectric 问题?但我认为它应该可以在原生 Android 上正常工作,因为它运行的是原生 Android 代码。