bil*_*lst 16 android android-espresso
在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();
}
Run Code Online (Sandbox Code Playgroud)
在活动中:
@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();
}
Run Code Online (Sandbox Code Playgroud)
当我调用Espresso测试方法时,执行直接执行finish().
当我按下后退按钮(用我的手)时Activity,执行首先进入onBackPressed()然后进入finish().如何onBackPressed()使用Espresso 测试功能?谢谢!
编辑:这是我的错误.问题是在我想调用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();
}
Run Code Online (Sandbox Code Playgroud)
sta*_*uel 35
Espresso.pressBack()如果您不在根活动中,该方法看起来就像您期望的那样工作.当你看一下它的实现评论时:
/**
* Press on the back button.
*
* @throws PerformException if currently displayed activity is root activity, since pressing back
* button would result in application closing.
*/
public static void pressBack() {
onView(isRoot()).perform(ViewActions.pressBack());
}
Run Code Online (Sandbox Code Playgroud)
我测试了它,如果你在一个不是你的根活动的活动中这样做,它工作正常.如果你想在那里做,我建议你使用ui-automator(ui-automator在espresso测试中完全可用):
将此添加到您的gradle:
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
Run Code Online (Sandbox Code Playgroud)
然后在测试中执行此操作:
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
mDevice.pressBack();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11857 次 |
| 最近记录: |