Espresso测试示例
需要测试的Activity使用之前写过的一个界面,点击更新按钮便下载apk并更新,代码可见使用JobIntentService写一个下载服务
class MainActivity : BaseMvpActivity<MainContract.View, MainContract.Presenter>(),MainContract.View {private val receiver = object : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {intent?.let {if (it.action == APK_DOWNLOAD_SUCCESSFUL){//apk下载成功showInstallationDialog(PERMISSION_REQUEST_CODE)}}}}override fun attachLayoutRes(): Int {return R.layout.activity_main}override fun createPresenter(): MainContract.Presenter {return MainPresenter()}override fun initData() {button_updateApk.setOnClickListener {updateApk()}}private fun updateApk(){val url = "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk"updateApk(url,APK_DOWNLOAD_SUCCESSFUL)//注册apk下载成功广播registerReceiver(receiver, APK_DOWNLOAD_SUCCESSFUL)}override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode == PERMISSION_REQUEST_CODE) {showInstallationDialog(PERMISSION_REQUEST_CODE)}}}
测试类也很简单,先初始化并获取该activity,然后调用useAppContext()测试方法获取按钮并点击,下载成功后弹出更新提示,获取该dialog并点击更新按钮,测试完成
class MainActivityTest {private lateinit var activity: MainActivity@get:Rulevar mActivityRule = ActivityScenarioRule(MainActivity::class.java)//在Test前初始化@Beforefun init() {mActivityRule.scenario.onActivity {activity = it}}@Testfun useAppContext() {//获取更新按钮val viewInteraction = Espresso.onView(ViewMatchers.withId(R.id.button_updateApk))//验证更新按钮是否显示viewInteraction.check(ViewAssertions.matches(ViewMatchers.isDisplayed()))//点击更新按钮viewInteraction.perform(ViewActions.click())//验证提示弹窗是否弹出Espresso.onView(ViewMatchers.withText(CoreMatchers.containsString("检测到新版本是否更新"))).inRoot(RootMatchers.withDecorView(CoreMatchers.not(CoreMatchers.`is`(activity.window.decorView)))).check(ViewAssertions.matches(ViewMatchers.isDisplayed()))//点击弹窗的确认按钮Espresso.onView(ViewMatchers.withText("更新")).inRoot(RootMatchers.withDecorView(CoreMatchers.not(CoreMatchers.`is`(activity.window.decorView)))).perform(ViewActions.click())}}
参考:
https://developer.android.google.cn/training/testing/espresso/setup
https://blog.csdn.net/lyabc123456/article/details/89875578
https://blog.csdn.net/to_perfect/article/details/80738867
https://www.jianshu.com/p/6c1931c27057
https://blog.csdn.net/cs_lwb/article/details/102914820
Espresso测试示例相关推荐
- Android Espresso 测试框架探究
1 简介 Espresso 是谷歌官方实现的一个测试框架,根据官方文档,该框架主要能实现如下的功能. 查找一个view是否显示 在一个view上触发一个动作 查询一个view中是否符合一个断言 使用 ...
- WPF命中测试示例(二)——几何区域命中测试
接续上次的命中测试,这次来做几何区域测试示例. 示例 首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置: 当前设计视图界面如下: 接下来,转到窗体的"Windo ...
- wxWidgets:wxHtml 测试示例
wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 #include "wx/wxprec.h" # ...
- 关键字驱动测试示例_带有示例的False关键字
关键字驱动测试示例 Python False关键字 (Python False keyword) False is a keyword (case-sensitive) in python, it i ...
- 180多个Web应用程序测试示例测试用例
180多个Web应用程序测试示例测试用例 假设:假设您的应用程序支持以下功能 各种领域的表格 儿童窗户 应用程序与数据库进行交互 各种搜索过滤条件和显示结果 图片上传 发送电子邮件功能 数据导出功能 ...
- C#使用Modbus协议读写汇川PLC的M区寄存器(测试示例),接上篇
对汇川PLC采用Modbus-TCP进行读写寄存器测试示例 新建WinForms应用程序InovancePlcDemo,.net framework 4.5. 重命名窗体名为FormInovanceP ...
- WPF命中测试示例(一)——坐标点命中测试
命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试. 示例 ...
- slice_Spring Boot Web Slice测试–示例
slice Spring Boot 引入了一段时间的测试切片 ,花了我一些时间来研究它并探索它的一些细微差别. 背景 使用此功能的主要原因是减少样板. 考虑一个看起来像这样的控制器,仅适用于使用Kot ...
- Spring Boot Web Slice测试–示例
春天开机推出 测试切片而回,它已经采取了一些时间来解决它我的头,并探讨一些细微的差别. 背景 使用此功能的主要原因是减少样板. 考虑一个看起来像这样的控制器,仅适用于使用Kotlin编写的各种控制器. ...
最新文章
- NLP任务语义相似数据准备及实战
- ajax练习,ajax练习
- myeclipse 2019中文版
- mac显示/隐藏文件
- 2021-5-18大搜车
- java 屏蔽邮箱_使用javamail发送邮件的时候如何阻止附件内容输出到控制台
- SYN攻击原理以及检测防范技术
- 如果我使用Docker,是否需要OpenStack?
- NSX控制平面和静态路由更新流程1
- 实战 Windows Server 2012 群集共享卷
- python必备入门代码-小白入门Python开发,必备技能有哪些?
- win10 常用DOS命令
- 鸡兔同笼——算法详解
- 绝了!你裁我剪,斯尼帕!文末源码
- 在安卓系统中集成YAHFA框架
- 为什么将机器学习应用于资产定价?
- 卫星历史影像数据—六种查看方法
- el-dialog的宽度修改
- TikTok 被盯上原来是扎克伯格背后搞的鬼?
- php 多参数函数,php自定义函数的参数在函数间传递的三种方式详解