Android Studio 3.0+ Record Espresso Test 自动化测试
程序员文章站
2022-10-08 20:47:39
准备工作 1.将android studio 版本升级到3.0+2.百度下载夜神模拟器 夜神模拟器的基本设置 PS:以上就是夜神模拟器的基本设置 Android Studio 连接夜神模拟器 开始录制自动测试代码 PS:操作模拟器 -> Record Your Test 弹框将自动生成你的行为代码 ......
准备工作
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/index.html 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/index.html 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/index.html 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/index.html 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:代码其实很简单,照搬照套,还有别的花样么...录制的时候,也就是操作模拟器,生成代码的时候有点卡....有没有人告诉我怎么解决?
上一篇: 深入理解Vue组件3大核心概念
下一篇: golang gRPC(持续更新)