私は何かクレイジーなものを見逃しているに違いないと感じています。ABS で動作するように記述されたコードを変換し (実際に動作しました)、ネイティブの ActionBar を使用するように切り替えています。最小 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);
}
}
私の AndroidManifest:
<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) で実際が null でないことを期待しています
Robolectric 2.0 Alpha 2を使用していることを付け加えておきます。テストをスキップして apk をパッケージ化したActionBar
ところ、正常に動作しているように見えたので、これは Robolectric の問題に違いないと感じていますか? しかし、ネイティブ Android コードを実行していたので、ネイティブ Android でも問題なく動作するはずだと思いました。