当前位置:   article > 正文

Android UI 测试工具- Espresso的配置及使用_android espresso

android espresso
  • 介绍

本篇文章参考:Espresso谷歌官方介绍

Espresso是一个非常强大的Android UI测试框架,使用Espresso可模拟用户操作、检测数据编写简洁、漂亮、可靠的Android UI测试。

  • 配置

添加Espresso依赖项

打开应用的build.gradle文件,注意不是顶级的build.gradle文件,是app/build.grdle。在依赖项中添加以下代码:需均使用androidx.test

  1. androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
  2. androidTestImplementation 'androidx.test:runner:1.5.2'
  3. androidTestImplementation 'androidx.test:rules:1.5.0'

设置插桩测试运行程序

将下行代码添加到同一build.gradle文件的android.defaultConfig中

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

添加第一个测试

一般会在程序的项目的src/androidTest/java/com.example.package/中创建测试,示例如下:

  1. @RunWith(AndroidJUnit4.class)
  2. @LargeTest
  3. public class HelloEspressoTest {
  4. @Rule
  5. public ActivityScenarioRule<MainActivity> activityRule =
  6. new ActivityScenarioRule<>(MainActivity.class);
  7. @Test
  8. public void testTextMatch() {
  9. //Text为Hello的控件是否目前显示在界面上
  10. onView(withText("Hello")).check(matches(isDisplayed()));
  11. }
  12. }

语法

Espresso API建议测试作者考虑用户在与应用互动时可能会执行的操作-找到界面元素并与之互动。同时,该框架会阻止直接访问应用的activity和视图,因为保留这些对象并在界面现成之外对其执行操作是导致测试不稳定的主要原因。因此,在Espresso API中看到getView()和getCurrentActivity()等方法,只需实现ViewAction和ViewAssertion就可以安全地对视图执行操作。

Espresso 的主要组件包括:

  • Espresso 用于与视图交互(通过 onView()onData())的入口点。此外,还会公开不一定与任何视图相关联的 API,例如 pressBack()

  • ViewMatchers 实现 Matcher<? super View> 接口的对象的集合。可以将其中一个或多个对象传递给 onView() 方法,以在当前视图层次结构中找到某个视图。

  • ViewActions 可传递给 ViewInteraction.perform() 方法的 ViewAction 对象的集合,例如 click()

  • ViewAssertions 可传递给 ViewInteraction.check() 方法的 ViewAssertion 对象的集合。大多数情况下,可以使用匹配断言,该断言使用视图匹配器来断言当前所选视图的状态。

  1. // withId(R.id.my_view) is a ViewMatcher
  2. // click() is a ViewAction
  3. // matches(isDisplayed()) is a ViewAssertion
  4. onView(withId(R.id.my_view))
  5. .perform(click())
  6. .check(matches(isDisplayed()));
查找视图

onView()方法匹配当前视图层次结构中地一个(且只有一个)视图,一般需要视图具有唯一的R.idwithId匹配器会缩小视图搜索范围

  1. onView(withId(R.id.my_view));
  2. //如果多个视图之间共享R.id,使用该R.id会抛出AmbiguousViewMatcherException。
  3. //可以通过使用组合匹配器来缩小搜索范围
  4. onView(allof(withId(R.id.my_view), withText("Hello!")));
  5. //也可以如下所示
  6. onView(allof(withId(R.id.my_view), not(withText("Unwanted"))));

视图操作

找到适合目标视图地匹配器后,可以使用perform方法对该视图执行ViewAction实例

点击视图
  1. onView(...).perform(click());
  2. //通过一次perform调用来执行多项操作
  3. onView(...).perform(typeText("Hello"), click());

检查视图断言

可以使用check()方法将断言应用于当前选定的视图,最常用的断言是matches()断言,它使用ViewMatcher对象断言当前所选视图的状态。

注:不能将断言放在onView()参数中,而应该在check代码块中明确指定要检查的内容。

onView(...).check(matches(withText("Hello!")))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/647305
推荐阅读
相关标签
  

闽ICP备14008679号