Android アプリで単純なメソッドを呼び出すと、別のアクティビティが開始されることをテストしようとしています。getNextStartedActivity
常にランチャー アクティビティを返します。
テストは次のとおりです。
@Test
public void clickingButton_shouldStartNextActivity() throws Exception {
CurrentActivity activity = Robolectric.setupActivity(CurrentActivity.class);
activity.startNextActivity();
Intent expectedIntent = new Intent(activity, NextActivity.class);
assertEquals(expectedIntent, Shadows.shadowOf(activity).getNextStartedActivity());
}
CurrentActivity の startNextActivity メソッドは次のとおりです。
public void startNextActivity() {
startActivity(new Intent(this, NextActivity.class));
}
テストを実行すると、実際の結果として LoginActivity (ランチャー アクティビティ) が得られます。AndroidManifest.xml の LoginActivity は次のとおりです。
<activity
android:name=".LoginActivity"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>