当前位置: 移动技术网 > IT编程>移动开发>Android > Android Studio 3.0+ Record Espresso Test 自动化测试

Android Studio 3.0+ Record Espresso Test 自动化测试

2019年06月22日  | 移动技术网IT编程  | 我要评论

www.7758,达州装饰网,韩城暖恋

准备工作

1.将android studio 版本升级到3.0+
2.百度下载夜神模拟器


夜神模拟器的基本设置

 

 

 

 

ps:以上就是夜神模拟器的基本设置

android studio 连接夜神模拟器

//夜神模拟器默认的地址
adb connect 127.0.0.1:62001

 

开始录制自动测试代码

在顶部工具栏找到run -> record espresso test -> 选择夜神模拟器双击启动 -> 启动后界面如下图

 

ps:操作模拟器 -> record your test 弹框将自动生成你的行为代码 -> 点击ok -> 命名并保存代码(可以一个页面一个页面的录制,然后生成一份一份的测试脚本)

运行自动化测试脚本

ps:静待安装,然后模拟器会自动执行你录制的动作,logcat可以查看日志


贴上一份 record espresso test的脚本看看

package com.example.administrator.teagarden.activity.login;


import android.support.test.espresso.viewinteraction;
import android.support.test.filters.largetest;
import android.support.test.rule.activitytestrule;
import android.support.test.runner.androidjunit4;
import android.view.view;
import android.view.viewgroup;
import android.view.viewparent;
import com.example.administrator.teagarden.r;
import org.hamcrest.description;
import org.hamcrest.matcher;
import org.hamcrest.typesafematcher;
import org.junit.rule;
import org.junit.test;
import org.junit.runner.runwith;
import static android.support.test.espresso.espresso.onview;
import static android.support.test.espresso.action.viewactions.click;
import static android.support.test.espresso.action.viewactions.closesoftkeyboard;
import static android.support.test.espresso.action.viewactions.replacetext;
import static android.support.test.espresso.matcher.viewmatchers.isdisplayed;
import static android.support.test.espresso.matcher.viewmatchers.withclassname;
import static android.support.test.espresso.matcher.viewmatchers.withid;
import static android.support.test.espresso.matcher.viewmatchers.withtext;
import static org.hamcrest.matchers.allof;
import static org.hamcrest.matchers.is;

@largetest
@runwith(androidjunit4.class)
public class splashactivitytest {

    @rule
    public activitytestrule<splashactivity> mactivitytestrule = new activitytestrule<>(splashactivity.class);

    @test
    public void splashactivitytest() {
        // added a sleep statement to match the app's execution delay.
        // the recommended way to handle such scenarios is to use espresso idling resources:
        // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/
        try {
            thread.sleep(6000);
        } catch (interruptedexception e) {
            e.printstacktrace();
        }

        viewinteraction appcompatedittext = onview(
                allof(withid(r.id.login_edit_user),
                        childatposition(
                                childatposition(
                                        withclassname(is("android.widget.linearlayout")),
                                        2),
                                0),
                        isdisplayed()));
        appcompatedittext.perform(click());

        viewinteraction appcompatedittext2 = onview(
                allof(withid(r.id.login_edit_user),
                        childatposition(
                                childatposition(
                                        withclassname(is("android.widget.linearlayout")),
                                        2),
                                0),
                        isdisplayed()));
        appcompatedittext2.perform(replacetext("152****3478"), closesoftkeyboard());

        viewinteraction appcompatedittext3 = onview(
                allof(withid(r.id.login_edit_mima),
                        childatposition(
                                allof(withid(r.id.logint_edit_layout),
                                        childatposition(
                                                withclassname(is("android.widget.linearlayout")),
                                                4)),
                                0),
                        isdisplayed()));
        appcompatedittext3.perform(replacetext("admin000"), closesoftkeyboard());

        viewinteraction appcompatbutton = onview(
                allof(withid(r.id.login_button), withtext("登录"),
                        childatposition(
                                childatposition(
                                        withclassname(is("android.widget.relativelayout")),
                                        1),
                                2),
                        isdisplayed()));
        appcompatbutton.perform(click());

        // added a sleep statement to match the app's execution delay.
        // the recommended way to handle such scenarios is to use espresso idling resources:
        // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/
        try {
            thread.sleep(3000);
        } catch (interruptedexception e) {
            e.printstacktrace();
        }

        viewinteraction radiobutton = onview(
                allof(withid(r.id.main_home_radio2), withtext("监控"),
                        childatposition(
                                allof(withid(r.id.main_tab_group),
                                        childatposition(
                                                withclassname(is("android.widget.linearlayout")),
                                                0)),
                                1),
                        isdisplayed()));
        radiobutton.perform(click());

        // added a sleep statement to match the app's execution delay.
        // the recommended way to handle such scenarios is to use espresso idling resources:
        // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/
        try {
            thread.sleep(3000);
        } catch (interruptedexception e) {
            e.printstacktrace();
        }
        
        viewinteraction radiobutton2 = onview(
                allof(withid(r.id.main_home_radio3), withtext("动态"),
                        childatposition(
                                allof(withid(r.id.main_tab_group),
                                        childatposition(
                                                withclassname(is("android.widget.linearlayout")),
                                                0)),
                                2),
                        isdisplayed()));
        radiobutton2.perform(click());

        // added a sleep statement to match the app's execution delay.
        // the recommended way to handle such scenarios is to use espresso idling resources:
        // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/
        try {
            thread.sleep(3000);
        } catch (interruptedexception e) {
            e.printstacktrace();
        }

        viewinteraction radiobutton3 = onview(
                allof(withid(r.id.main_home_radio4), withtext("我的"),
                        childatposition(
                                allof(withid(r.id.main_tab_group),
                                        childatposition(
                                                withclassname(is("android.widget.linearlayout")),
                                                0)),
                                3),
                        isdisplayed()));
        radiobutton3.perform(click());
    }

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

ps:代码其实很简单,照搬照套,还有别的花样么...录制的时候,也就是操作模拟器,生成代码的时候有点卡....有没有人告诉我怎么解决?

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网