`
MyEyeOfJava
  • 浏览: 1152258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71173
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

[Android]ActivityUnitTestCase解释

阅读更多


ActivityUnitTestCase
ActivityUnitTestCase这个单元测试抽象类,是为了单独测试Activity而存在的,所以当你选择去测试service,receive的时候就不要选择它了,把它加入知识体系中是为了扩展对固有测试思路的联系,ActivityUnitTestCase会以与系统底层关联性最小的代价创建出来,是一个专门测试Activity的单元测试父类。这种与系统的关联性在setup与teardown方法中,系统已经自动帮你做了,你需要做得就是启动这个activity去做测试。

需要注意的是,作为纯单元测试,是不应该将activity运行起来进行测试的,或者不能有数据存储和交互依赖关系,下面的方法可以在这个类中调用,但是被调用的时候会抛出相关的excepiton信息。

createPendingResult(int, Intent, int)
startActivityIfNeeded(Intent, int)
startActivityFromChild(Activity, Intent, int)
startNextMatchingActivity(Intent)
getCallingActivity()
getCallingPackage()
createPendingResult(int, Intent, int)
getTaskId()
isTaskRoot()
moveTaskToBack(boolean)


下面的方法被调用的时候再UI层面上你是看不到任何反应的,但是能够调用以下2个方法测试activity并且传递相关参数。

 getStartedActivityIntent()  //获取到当前被测试activity的intent
 getStartedActivityRequest() //获取被测activity的request code
startActivity(Intent)  //开启activity但是不在ui线程中展示
startActivityForResult(Intent, int)  //获取activity运行后的结果,调用后再activity运行结束后调用onActivityResult


使用方法举例:
 public class MyActivity extends Activity {
     ...

     static final int PICK_CONTACT_REQUEST = 0;

     protected boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
             // When the user center presses, let them pick a contact.
             startActivityForResult(
                 new Intent(Intent.ACTION_PICK,
                 new Uri("content://contacts")),
                 PICK_CONTACT_REQUEST);
            return true;
         }
         return false;
     }

     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == PICK_CONTACT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 // A contact was picked.  Here we will just display it
                 // to the user.
                 startActivity(new Intent(Intent.ACTION_VIEW, data));
             }
         }
     }
 }


下面的方法也在调用的时候不会开启activity,你可以使用 isFinishCalled() and getFinishedActivityRequest()在调取他们的时候拦截参数
finish() //activity 完成
finishFromChild(Activity) //子activity调用finish方法的时候被调用
finishActivity(int) //强制停止之前你使用 startActivityForResult方法开启的activity



例如,使用intent开启某个activity:
mHomeActivity = launchActivityWithIntent("com.ziyu.activity", HomeActivity.class, intent);



总结一下:ActivityUnitTestCase这个抽象类的作用是,开启某个activity,获取activity传递的参数,获取activity执行后的结果,能够给activity提供相关的参数进行启动,可以不运行在ui线程中,实现真正的单元测试activity,那么它符合测试的基本需求,输入相关参数,获取期望结果,验证。

谢谢。
0
0
分享到:
评论

相关推荐

    android之Junit ActivityUnitTestCase 演示

    `JUnit`是Java领域广泛使用的单元测试框架,而在Android环境中,我们需要结合特定的Android测试类来对应用程序进行测试,其中之一就是`ActivityUnitTestCase`。本篇文章将深入探讨如何使用`JUnit`和`...

    android python解释器

    "android python解释器"这个主题就聚焦于如何在Android设备上实现这一目标。这里我们将深入探讨Python解释器在Android上的应用,以及如何通过"upython.android"这样的项目来实现这一功能。 Python是一种广泛使用的...

    android之Junit ActivityUnitTestCase 剖析

    本文将深入剖析Android中的JUnit测试框架,特别是`ActivityUnitTestCase`和`ActivityInstrumentationTestCase2`这两个类,它们是针对Android活动中单元测试的重要工具。 首先,`ActivityUnitTestCase`是一个专门...

    android 部分编译命令解释

    android 部分编译命令解释 android 部分编译命令解释 android 部分编译命令解释

    Android串口通信(Android Studio)

    在Android开发中,串口通信(Serial Port Communication)是一种重要的技术,它允许设备之间通过串行接口进行数据交换。在Android Studio环境下实现串口通信,开发者可以构建与硬件设备交互的应用,例如读取传感器...

    JS调用Android方法,向Android方法传递json数据

    在现代的移动应用开发中,JavaScript与原生平台之间的交互变得越来越常见,特别是在使用Android的WebView组件时。本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 ...

    Android扫雷游戏(基于Android Studio)

    【Android扫雷游戏开发详解】 在移动开发领域,Android Studio是Google推出的官方集成开发环境(IDE),用于构建Android应用程序。本项目"Android扫雷游戏"就是利用Android Studio进行开发的一个实例,旨在帮助初学...

    Android设置虚线、圆角、渐变

    在Android开发中,为UI元素添加虚线、圆角和渐变效果是常见的需求,可以提升应用的视觉吸引力。下面将详细讲解如何实现这些效果。 ### 一、虚线(Dashed Line) 在Android中,我们可以使用`Shape Drawable`来创建...

    Android之基于RTP/RTSP即时通讯-Android源码

    以下是关于这些知识点的详细解释: **RTP (Real-time Transport Protocol)** 是一种网络协议,主要用于传输实时数据,如音频和视频。RTP通常与RTCP(Real-time Control Protocol)一起使用,以提供服务质量监控和...

    Android 7.1.1 (API 25) SDK Platform 下载

    # mv /opt/android-sdk/platforms/android-25/android-7.1.1/* /opt/android-sdk/platforms/android-25/ # rm -rf /opt/android-sdk/platforms/android-25/android-7.1.1 官网下载地址:...

    Android开发入门60个小案例+源代码

    在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与设备硬件交互等。"Android开发入门60个小案例+源代码"这个资源提供了丰富的...

    Android自定义日期选择器源码

    在博客中,作者wwj_748可能分享了实现这一过程的具体步骤、遇到的问题及解决方案,以及源码的详细解释。通过阅读博客和查看提供的DateTimePicker源码,我们可以学习到如何将理论知识转化为实际应用,进一步提升...

    Android BLE蓝牙例子(包括android版Lightblue)实例源码

    源码里面有Bluetooth4_3/BLEDemo/Android_Lightblue.apk三个.前两个是BLE的demo。BLEDemo这个功能较Bluetooth4_3多一些,有兴趣的可以都看下。Android_Lightblue.apk是Android版的lightblue,在进行ble开发的时候用...

    android应用开发范例精解

    第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...

    android sdk27版本

    Android SDK是Android应用程序开发不可或缺的一部分,它为开发者提供了构建、测试和调试应用所需的各种工具。在本场景中,我们关注的是Android SDK的27版本,这对应于Android 8.1.0,也称为Oreo。这个版本的SDK包含...

    50款Android studio项目源码.zip

    《Android Studio项目源码解析与学习指南》 在Android应用开发的世界中,Android Studio作为官方推荐的集成开发环境(IDE),已经成为开发者们的首选工具。本文将深入探讨"50款Android studio项目源码.zip"这一资源...

    Android studio 小案例

    在Android开发领域,Android Studio是谷歌官方推荐的集成开发环境(IDE),用于构建高质量的Android应用。本小案例将深入探讨如何使用Android Studio进行实际项目开发。以下将详细介绍Android Studio的一些核心功能和...

    Android SipDemo( 网络电话的例子源码,android 2.3以上才能用)

    Android SipDemo是一个示例应用,它展示了如何在Android平台上实现网络电话功能,特别是针对Android 2.3(Gingerbread)及以上版本。这个项目基于Android的SIP(Session Initiation Protocol)API,这是一种用于...

    android检测U盘插拔事件

    在Android系统中,检测U盘(USB存储设备)的热插拔事件是一项常见的需求,尤其在开发与USB设备交互的应用时。"android检测U盘插拔事件"这个标题揭示了我们要探讨的核心技术点:如何在Android应用中监听并处理U盘的...

    Android一键清理后台实现

    在Android平台上,开发一款“一键清理后台”应用可以帮助用户快速释放设备内存,提高系统运行速度。这个功能通常包括清理正在运行的应用程序、终止不必要的服务以及管理后台进程。下面将详细介绍如何在Android 4.4...

Global site tag (gtag.js) - Google Analytics