需要测试的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测试示例相关推荐

  1. Android Espresso 测试框架探究

    1 简介 Espresso 是谷歌官方实现的一个测试框架,根据官方文档,该框架主要能实现如下的功能. 查找一个view是否显示 在一个view上触发一个动作 查询一个view中是否符合一个断言 使用 ...

  2. WPF命中测试示例(二)——几何区域命中测试

    接续上次的命中测试,这次来做几何区域测试示例. 示例 首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置: 当前设计视图界面如下: 接下来,转到窗体的"Windo ...

  3. wxWidgets:wxHtml 测试示例

    wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 wxWidgets:wxHtml 测试示例 #include "wx/wxprec.h" # ...

  4. 关键字驱动测试示例_带有示例的False关键字

    关键字驱动测试示例 Python False关键字 (Python False keyword) False is a keyword (case-sensitive) in python, it i ...

  5. 180多个Web应用程序测试示例测试用例

    180多个Web应用程序测试示例测试用例 假设:假设您的应用程序支持以下功能 各种领域的表格 儿童窗户 应用程序与数据库进行交互 各种搜索过滤条件和显示结果 图片上传 发送电子邮件功能 数据导出功能 ...

  6. C#使用Modbus协议读写汇川PLC的M区寄存器(测试示例),接上篇

    对汇川PLC采用Modbus-TCP进行读写寄存器测试示例 新建WinForms应用程序InovancePlcDemo,.net framework 4.5. 重命名窗体名为FormInovanceP ...

  7. WPF命中测试示例(一)——坐标点命中测试

    命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试. 示例 ...

  8. slice_Spring Boot Web Slice测试–示例

    slice Spring Boot 引入了一段时间的测试切片 ,花了我一些时间来研究它并探索它的一些细微差别. 背景 使用此功能的主要原因是减少样板. 考虑一个看起来像这样的控制器,仅适用于使用Kot ...

  9. Spring Boot Web Slice测试–示例

    春天开机推出 测试切片而回,它已经采取了一些时间来解决它我的头,并探讨一些细微的差别. 背景 使用此功能的主要原因是减少样板. 考虑一个看起来像这样的控制器,仅适用于使用Kotlin编写的各种控制器. ...

最新文章

  1. NLP任务语义相似数据准备及实战
  2. ajax练习,ajax练习
  3. myeclipse 2019中文版
  4. mac显示/隐藏文件
  5. 2021-5-18大搜车
  6. java 屏蔽邮箱_使用javamail发送邮件的时候如何阻止附件内容输出到控制台
  7. SYN攻击原理以及检测防范技术
  8. 如果我使用Docker,是否需要OpenStack?
  9. NSX控制平面和静态路由更新流程1
  10. 实战 Windows Server 2012 群集共享卷
  11. python必备入门代码-小白入门Python开发,必备技能有哪些?
  12. win10 常用DOS命令
  13. 鸡兔同笼——算法详解
  14. 绝了!你裁我剪,斯尼帕!文末源码
  15. 在安卓系统中集成YAHFA框架
  16. 为什么将机器学习应用于资产定价?
  17. 卫星历史影像数据—六种查看方法
  18. el-dialog的宽度修改
  19. TikTok 被盯上原来是扎克伯格背后搞的鬼?
  20. php 多参数函数,php自定义函数的参数在函数间传递的三种方式详解

热门文章

  1. 新概念英语第一册单词
  2. 【虚拟机/UBunTu】VMBox下UBunTu扩容磁盘
  3. vmbox-android
  4. 【小程序开发之制作首页】
  5. 当英文遇上汉语 就知道汉语有多强大了
  6. excel分列---多页批量操作--vba宏实现
  7. 程序员如何预防颈椎病?
  8. 交通灯控制系统(30-5-20-5)【数电课设】
  9. centos 下载文件很慢_百度云盘上传文件和下载文件慢的解决办法
  10. 团队协作方法之:高效使用任务故事墙