Android Espresso使用

Espresso自动化测试,创建项目时已导入相对应的包。

  1. 打开sdk(D:\java\androidstudio\sdk\tools)中的tools文件夹下的uiautomatorviewer.bat,点击下图中红色框中的内容捕获一帧画面。

    Android Espresso使用_第1张图片
    图1.png

  2. Run->点击Record Espresso Test,提示运行安装程序


    Android Espresso使用_第2张图片
    图2.png
  3. 点击确定后出现如下界面


    Android Espresso使用_第3张图片
    图3.png
  4. 点击上图中的Add Assertion按钮,配合uiautomatorviewer点击控件增加断言


    Android Espresso使用_第4张图片
    图4.png
  5. 选择Save Assertion来保存断言并退出此窗口


    Android Espresso使用_第5张图片
    图5.png
  6. 点击Complete Recording按钮,完成录制。此时需要填写一个测试的类名,然后点击Save。


    Android Espresso使用_第6张图片
    图6.png
  7. 保存之后,就在androidTest目录的包下生成一个测试类.


    Android Espresso使用_第7张图片
    图7.png

测试类代码如下:

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

    @Rule
    public ActivityTestRule 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 childAtPosition(
            final Matcher parentMatcher, final int position) {

        return new TypeSafeMatcher() {
            @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张图片
    图8.png

你可能感兴趣的:(Android Espresso使用)