1

アクティビティ間通信でテストをプッシュし、たとえば、正しいログイン後に正しいアクティビティを生成することを確認しようとしています (2 つの可能なアクティビティから)。

私のコードは次のようになります。

@RunWith(GuiceRobolectricJUnitRunner.class)
public class LoginActivityTest {
@Inject
private LoginActivity activity;
@Inject
private ExplorerActivity startedActivity ;
@Inject
private Context context;

private Button loginButton;
private EditText login;
private EditText password;

@Before
public void setUp() throws Exception {
    activity.onCreate(null);
    loginButton = (Button) activity.findViewById(R.id.identification_login_button);
    login = (EditText) activity.findViewById(R.id.txtLogin);
    password = (EditText) activity.findViewById(R.id.txtPassword);

}

@Online
@Test
public void shouldExploreWhenLoginIsCorrect() throws Exception {
    assertNotNull(activity);
    login.setText("test@test.com");
    password.setText("test");
    activity.setIntent(new Intent());
    loginButton.performClick();
    ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
    Intent startedIntent = shadowActivity.getNextStartedActivity();
    ShadowIntent shadowIntent = Robolectric.shadowOf(startedIntent);
    assertEquals(shadowIntent.getIntentClass(), ExplorerActivity.class);
//      startedActivity.setIntent(startedIntent);
//      startedActivity.onCreate(null);


    }
}

私の問題は、開始されたアクティビティをシャドウインテントから取得できないことです。そのようなことを達成する方法はありますか?また、探索活動の痕跡も見られず、Robolectric がすべてのスポーン プロセスをサンドボックス化する作業を行っているかどうか疑問に思っていました。Robolectric でのチェーンされたアクティビティ テストの例がとても気に入っています。ありがとう。

4

1 に答える 1

4

3 か月前のことなので、既に答えを見つけている可能性があります。そうでない場合は、newInstance()既に持っているものを使用して、通常どおり続行してください。

ExplorerActivity explorerActivity = (ExplorerActivity) shadowIntent.getIntentClass().newInstance();
explorerActivity.setIntent(startedIntent);
explorerActivity.onCreate(null);
于 2012-09-20T15:59:34.230 に答える