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")));

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