Android Espresso使用

Espresso自动化测试,创建项目时已导入相对应的包。
  1. 打开sdk(D:\java\androidstudio\sdk\tools)中的tools文件夹下的uiautomatorviewer.bat,点击下图中红色框中的内容捕获一帧画面。

    3110861-67e48f04b8b9fb99.png
    图1.png

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


    3110861-56ab392115535e51.png
    图2.png
  3. 点击确定后出现如下界面


    3110861-10fc369b8f131846.png
    图3.png
  4. 点击上图中的Add Assertion按钮,配合uiautomatorviewer点击控件增加断言


    3110861-cf3358c02da83719.png
    图4.png
  5. 选择Save Assertion来保存断言并退出此窗口


    3110861-bbe8dd785c61b8ff.png
    图5.png
  6. 点击Complete Recording按钮,完成录制。此时需要填写一个测试的类名,然后点击Save。


    3110861-f525b0e41b6c19ff.png
    图6.png
  7. 保存之后,就在androidTest目录的包下生成一个测试类.


    3110861-c56decdc3135cfab.png
    图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' 点击运行,此时代码执行的过程即是刚刚操作的步骤。


    3110861-4a373dbf920143e7.png
    图8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值