LoginActivity loginActivity = Robolectric.buildActivity(LoginActivity.class).create().get();
以上代码用于创建一个待测试的LoginActivity,其中的create()会调用onCreate()方法。
有的Activity需要使用Intent传递的参数:
Intent intent = new Intent();
intent.putExtra("key", "value");
LoginActivity loginActivity = Robolectric.buildActivity(LoginActivity.class).withIntent(intent).create().get();
loginButton = (Button) activity.findViewById(R.id.btn_login);
Robolectric.clickOn(loginButton);
使用clickOn需要在buildActivity后调用visible方法,否则会得到一个错误。
activity = Robolectric.buildActivity(LoginActivity.class).create().visible().get();
假如测试登录界面,输入正确的用户名密码后,点击登录按钮,跳转到HomeActivity
:
@Test
public void should_goto_HomeActivity_when_login_with_valid_user() throws Exception {
username.setText("valid_username");
password.setText("valid_password");
Robolectric.clickOn(loginButton);
String nextStartedActivityClass = Robolectric.getShadowApplication().getNextStartedActivity().getClass().getName();
assertEquals(HomeActivity.class.getClass(), nextStartedActivityClass);
}
类似的方法有:getNextStartedService()
,getNextStopedService()
。
假如测试登录界面, 登录失败时,会使用Toast通知用户:
@Test
public void should_notify_when_login_failed() throws Exception {
username.setText("invalid_user");
password.setText("invalid_password");
Robolectric.clickOn(loginButton);
assertEquals("Login failed, please check and try again.", ShadowToast.getTextOfLatestToast());
}
在Eclipse中查看Robolectric.
下的方法:
查看内置的Shadow*
: