TTr*_*mit 5 java instrumentation android robolectric
是否有一种简单的方法可以模拟在 Robolectric 中按下后退按钮?
以下测试失败:
@Test
public void testBackButtonClosesActivity() throws Exception {
ShadowActivity activityShadow = Shadows.shadowOf(activity);
activity.onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0));
assertTrue(activityShadow.isFinishing());
}
Run Code Online (Sandbox Code Playgroud)
但是,这成功了:
@Test
public void testBackButtonClosesActivity() throws Exception {
ShadowActivity activityShadow = Shadows.shadowOf(activity);
activity.onBackPressed();
assertTrue(activityShadow.isFinishing());
}
Run Code Online (Sandbox Code Playgroud)
这是我要覆盖的活动onKeyDown()
:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK & myCondition) {
doStuff();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
Run Code Online (Sandbox Code Playgroud)
测试的时候myCondition
是真实的触发器doStuff()
使用另一个测试activity.onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0));
。
活动是使用以下方法创建的:
Intent intent = new Intent(ShadowApplication.getInstance().getApplicationContext(), MyActivity.class);
activity = Robolectric.buildActivity(MyActivity.class).withIntent(intent).create().visible().get();
Run Code Online (Sandbox Code Playgroud)
我应该指出,当 myCondition 为 false 时按下应用程序中的后退按钮会导致活动关闭。
归档时间: |
|
查看次数: |
2804 次 |
最近记录: |