我正在尝试在交互活动通信中推送我的测试并检查例如在正确登录后,我产生了正确的活动(来自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);
}
}
我的问题是我无法从shadowintent中检索已启动的活动。有没有办法可以实现这样的目标?此外,我没有看到我的探索性的任何痕迹,我想知道Robolectric是否正在为每个产卵过程的沙盒工作。我真的很喜欢robolectric中链式活动测试的一个例子。感谢。
答案 0 :(得分:4)
从3个月前开始,您可能已经找到了答案,如果没有,您可以使用newInstance()
对已有的内容进行处理,然后按照正常情况继续进行。
ExplorerActivity explorerActivity = (ExplorerActivity) shadowIntent.getIntentClass().newInstance();
explorerActivity.setIntent(startedIntent);
explorerActivity.onCreate(null);