- Espresso 测试框架教程
- Espresso测试 - 主页
- 介绍
- 设置说明
- 在 Android Studio 中运行测试
- JUnit 概述
- 建筑学
- 查看匹配器
- 自定义视图匹配器
- 查看断言
- 查看操作
- 测试AdapterView
- 测试网页视图
- 测试异步操作
- 测试意图
- 测试多个应用程序的 UI
- 测试记录仪
- 测试用户界面性能
- 测试可访问性
- Espresso测试资源
- Espresso测试 - 快速指南
- Espresso 测试 - 有用资源
- Espresso测试 - 讨论
Espresso 测试框架 - 查看操作
如前所述,视图操作会自动执行 Android 应用程序中用户可执行的所有可能操作。Espresso onView和“onData”提供了执行方法,该方法接受视图操作并在测试环境中调用/自动执行相应的用户操作。例如,“click()”是一个视图操作,当传递给 onView( R.id.myButton ) .perform(click())方法时,将触发按钮的单击事件(id:“myButton” )在测试环境中。
在本章中,让我们了解 espresso 测试框架提供的视图操作。
类型文本()
typeText()接受一个String类型的参数(文本)并返回一个视图操作。返回的视图操作将提供的文本键入视图中。在放置文本之前,它会点击视图一次。如果内容已经包含文本,则可以将其放置在任意位置。
onView(withId(R.id.text_view)).perform(typeText("Hello World!"))
typeTextIntoFocusedView()
typeTextIntoFocusedView()与typeText()类似,只不过它将文本放置在视图中光标位置的旁边。
onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))
替换文本()
ReplaceText()与typeText()类似,只不过它替换了视图的内容。
onView(withId(R.id.text_view)).perform(typeTextIntoFocusedView("Hello World!"))
清除文本()
clearText()没有参数并返回一个视图操作,该操作将清除视图中的文本。
onView(withId(R.id.text_view)).perform(clearText())
按键()
pressKey()接受按键代码(例如KeyEvent.KEYCODE_ENTER)并返回一个视图动作,该动作将按下与按键代码相对应的按键。
onView(withId(R.id.text_view)).perform(typeText( "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER))
按菜单键()
pressMenuKey()没有参数并返回一个视图操作,该操作将按下硬件菜单键。
onView(withId(R.id.text_view)).perform(typeText( "Hello World!", pressKey(KeyEvent.KEYCODE_ENTER), pressMenuKey())
关闭软键盘()
closeSoftKeyboard()没有参数,并返回一个视图操作,如果打开了键盘,该操作将关闭键盘。
onView(withId(R.id.text_view)).perform(typeText( "Hello World!", closeSoftKeyboard())
点击()
click()没有参数并返回一个视图操作,该操作将调用视图的单击操作。
onView(withId(R.id.button)).perform(click())
双击()
doubleClick()没有参数并返回一个视图操作,该操作将调用视图的双击操作。
onView(withId(R.id.button)).perform(doubleClick())
长点击()
longClick()没有参数并返回一个视图操作,该操作将调用视图的长按操作。
onView(withId(R.id.button)).perform(longClick())
按返回()
pressBack() 没有参数并返回一个视图操作,该操作将单击后退按钮。
onView(withId(R.id.button)).perform(pressBack())
无条件地按返回()
pressBackUnconditionally()没有参数并返回一个视图操作,该操作将单击后退按钮,并且如果后退按钮操作退出应用程序本身,则不会引发异常。
onView(withId(R.id.button)).perform(pressBack())
打开链接()
openLink()有两个参数。第一个参数(链接文本)是Matcher类型,引用 HTML 锚标记的文本。第二个参数 (url) 是Matcher类型,引用 HTML 锚标记的 url。它仅适用于TextView。它返回一个视图操作,该操作收集文本视图内容中可用的所有 HTML 锚标记,找到与第一个参数(链接文本)和第二个参数(url)匹配的锚标记,最后打开相应的 url。让我们考虑一个文本视图,其内容为 -
<a href="http://www.google.com/">copyright</a>
然后,可以使用以下测试用例打开并TestLink,
onView(withId(R.id.text_view)).perform(openLink(is("copyright"), is(Uri.parse("http://www.google.com/"))))
这里,openLink将获取文本视图的内容,找到具有版权的链接作为文本,www.google.com作为url,并在浏览器中打开该url。
打开带有文本的链接()
openLinkWithText()有一个参数,该参数可以是 **String* 类型或 Matcher 类型。它只是openLink *方法的捷径。
onView(withId(R.id.text_view)).perform(openLinkWithText("copyright"))
openLinkWithUri()
openLinkWithUri()有一个参数,该参数可以是String类型或 Matcher 类型。它只是openLink * 方法的快捷方式。
onView(withId(R.id.text_view)).perform(openLinkWithUri("http://www.google.com/"))
按ImeActionButton()
pressImeActionButton()没有参数并返回一个视图操作,该操作将执行android:imeOptions配置中设置的操作。例如,如果android:imeOptions等于 actionNext,这会将光标移动到屏幕中下一个可能的EditText视图。
onView(withId(R.id.text_view)).perform(pressImeActionButton())
滚动到()
scrollTo()没有参数并返回一个视图操作,该操作将在屏幕上滚动匹配的scrollView。
onView(withId(R.id.scrollView)).perform(scrollTo())
刷下()
swipeDown()没有参数并返回一个视图操作,该操作将触发屏幕上的向下滑动操作。
onView(withId(R.id.root)).perform(swipeDown())
向上滑动()
swipeUp()没有参数并返回一个视图操作,它将触发屏幕上的向上滑动操作。
onView(withId(R.id.root)).perform(swipeUp())
向右滑动()
swipeRight()没有参数并返回一个视图操作,该操作将在屏幕上触发向右滑动操作。
onView(withId(R.id.root)).perform(swipeRight())
向左滑动()
swipeLeft()没有参数并返回一个视图操作,该操作将触发屏幕上向左滑动的操作。
onView(withId(R.id.root)).perform(swipeLeft())