Android Studio的UI自动化测试框架Espresso

Google I/O 2016 Android笔记之Espresso进阶

例程:

@RunWith(AndroidJUnit4.class)
public class LoginUITest {

    @Rule
    public ActivityTestRule<LoginActivity> rule=new ActivityTestRule<LoginActivity>(LogingActivity.class,true);

    @Test
    public void login(){
        //login
        onView(withId(R.id.userName)).perform(typeText("Jack"),closeSoftKeyboard());
        onView(withId(R.id.password)).perform(typeText("1234"),closeSoftKeyboard());
        onView(withText("登录")).perform(click());

        //verify
        onView(withId(R.id.content)).check(matches(isDisplayed()));
    }

}

作者:汪海游龙
链接:https://www.jianshu.com/p/22a09ae7b995
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

分为三步:

一.定位控件(ViewMatcher)

通过id定位

onView(withId(R.id.my_view))

通过字符串定位

onView(withText("Hello"))

如果目标视图在AdapterView(例如ListView,GridView,Spinner)中,onView方法可能无法正常工作,这个时候需要用到onData方法。 

假设一个Spinner的控件,我们要点击“Americano”,我们使用默认的Adaptor,它的字段默认是String的,因此当我们要进行点击的时候,就可以使用如下方法:

onData(allOf(is(instanceOf(String.class)), is("Americano"))).perform(click());

假设是一个Listview,我们需要点击Listview中第二个item的按钮,那么我们需要这样写:

onData(Matchers.allOf())
        .inAdapterView(withId(R.id.photo_gridview)) // listview的id
        .atPosition(1)                              // 所在位置
        .onChildView(withId(R.id.imageview_photo))  // item中子控件id
        .perform(click());

二.执行操作(ViewAction)

可以通过一个命令执行多个操作:

onView(...).perform(typeText("Hello"), click());    //从左往右顺序执行操作

三.校验(ViewAssertion)

使用check方法可以断言当前选择的界面, 常用的断言是matches,它使用ViewMatcher来断言当前选定视图的状态。例如,要检查视图中是否包含“Hello”这个字符串:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章