天天看點

Android Espresso使用

Espresso 自動化測試,建立項目時已導入相對應的包。

  1. 打開sdk(

    D:\java\androidstudio\sdk\tools

    )中的tools檔案夾下的uiautomatorviewer.bat,點選下圖中紅色框中的内容捕獲一幀畫面。
    Android Espresso使用
    圖1.png
  2. Run->點選Record Espresso Test,提示運作安裝程式
    Android Espresso使用
    圖2.png
  3. 點選确定後出現如下界面
    Android Espresso使用
    圖3.png
  4. 點選上圖中的Add Assertion按鈕,配合uiautomatorviewer點選控件增加斷言
    Android Espresso使用
    圖4.png
  5. 選擇Save Assertion來儲存斷言并退出此視窗
    Android Espresso使用
    圖5.png
  6. 點選Complete Recording按鈕,完成錄制。此時需要填寫一個測試的類名,然後點選Save。
    Android Espresso使用
    圖6.png
  7. 儲存之後,就在androidTest目錄的包下生成一個測試類.
    Android Espresso使用
    圖7.png

測試類代碼如下:

@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void mainActivityTest() {
        ViewInteraction appCompatButton = onView(
                allOf(withId(R.id.btn_open), withText("open"),
                        withParent(allOf(withId(R.id.activity_main),
                                withParent(withId(android.R.id.content)))),
                        isDisplayed()));
        appCompatButton.perform(click());

        ViewInteraction textView = onView(
                allOf(withText("登入成功"),
                        childAtPosition(
                                allOf(withId(R.id.activity_login),
                                        childAtPosition(
                                                withId(android.R.id.content),
                                                0)),
                                0),
                        isDisplayed()));
        textView.check(matches(withText("登入成功")));

    }

    private static Matcher<View> childAtPosition(
            final Matcher<View> parentMatcher, final int position) {

        return new TypeSafeMatcher<View>() {
            @Override
            public void describeTo(Description description) {
                description.appendText("Child at position " + position + " in parent ");
                parentMatcher.describeTo(description);
            }

            @Override
            public boolean matchesSafely(View view) {
                ViewParent parent = view.getParent();
                return parent instanceof ViewGroup && parentMatcher.matches(parent)
                        && view.equals(((ViewGroup) parent).getChildAt(position));
            }
        };
    }
}
           
  1. 這時,在剛剛生成的測試類右鍵,選擇Run 'MainActivityTest' 點選運作,此時代碼執行的過程即是剛剛操作的步驟。
    Android Espresso使用
    圖8.png

繼續閱讀