【发布时间】:2017-03-17 15:17:03
【问题描述】:
在 Espresso 类中:
@Rule
public IntentsTestRule<MainActivity> mIntentsRule = new IntentsTestRule<>(
MainActivity.class);
@Test
public void test_backButton(){
onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click());
Espresso.pressBack();
}
活动中:
@Override
public void onBackPressed() {
Log.d("TEST_pressBack", "inside onBackPressed()");
do_something();
super.onBackPressed();
}
@Override
public void finish() {
Log.d("TEST_pressBack", "inside finish()");
super.finish();
}
当我调用 Espresso 测试方法时,执行直接转到 finish()。
当我按下Activity 中的后退按钮(用手)时,执行首先在onBackPressed() 中进行,然后在finish() 中进行。
如何使用 Espresso 测试功能 onBackPressed()?
谢谢!
编辑: 这是我的错误。问题是在我想调用 pressBack 的 Activity 中打开了屏幕键盘。当软键盘打开时,按钮不会调用 onBackPressed 而是使键盘不显示。我连续尝试了两个 pressBack(),它工作正常:
@Rule
public IntentsTestRule<MainActivity> mIntentsRule = new IntentsTestRule<>(
MainActivity.class);
@Test
public void test_backButton(){
onView(withId(R.id.NEXT_ACTIVITY)).perform(scrollTo(), click());
Espresso.pressBack();
//The extra pressBack()
Espresso.pressBack();
}
【问题讨论】:
-
你可以使用 Espresso.closeSoftKeyboard()