[Android]ActivityUnitTestCase解释
Android 解释
2023-09-14 08:56:48 时间
ActivityUnitTestCase
ActivityUnitTestCase这个单元测试抽象类,是为了单独测试Activity而存在的,所以当你选择去测试service,receive的时候就不要选择它了,把它加入知识体系中是为了扩展对固有测试思路的联系,ActivityUnitTestCase会以与系统底层关联性最小的代价创建出来,是一个专门测试Activity的单元测试父类。这种与系统的关联性在setup与teardown方法中,系统已经自动帮你做了,你需要做得就是启动这个activity去做测试。
需要注意的是,作为纯单元测试,是不应该将activity运行起来进行测试的,或者不能有数据存储和交互依赖关系,下面的方法可以在这个类中调用,但是被调用的时候会抛出相关的excepiton信息。
下面的方法被调用的时候再UI层面上你是看不到任何反应的,但是能够调用以下2个方法测试activity并且传递相关参数。
使用方法举例:
下面的方法也在调用的时候不会开启activity,你可以使用 isFinishCalled() and getFinishedActivityRequest()在调取他们的时候拦截参数
例如,使用intent开启某个activity:
总结一下:ActivityUnitTestCase这个抽象类的作用是,开启某个activity,获取activity传递的参数,获取activity执行后的结果,能够给activity提供相关的参数进行启动,可以不运行在ui线程中,实现真正的单元测试activity,那么它符合测试的基本需求,输入相关参数,获取期望结果,验证。
谢谢。
Android虚拟机不能直接调用底层设备,如果要对底层设备进行调用,就需要用到so使用 C语言或C++编写完成,利用NDK进行编译,直接运行在Linux内核中,按jni调用 so时,基本类型可以直接交互。
官方解释:https://developer.android.com/topic/libraries/support-library/index.html 参考:http://www.jianshu.com/p/a5aa5f209895 1. 为什么要提供Support Library 最主要的原因就是:为了能在低版本的Android系统上使用高版本的SDK才具有的新功能、新特性。
先附上EventBus的git地址 EventBus,就按照名字翻译来说 事件总线 ,官方的说法是 EventBus is a publish/subscribe event bus optimized for Android. 也就是 eventbus是Android发布/订阅事件总线 。
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,那么它符合测试的基本需求,输入相关参数,获取期望结果,验证。
谢谢。
Android虚拟机不能直接调用底层设备,如果要对底层设备进行调用,就需要用到so使用 C语言或C++编写完成,利用NDK进行编译,直接运行在Linux内核中,按jni调用 so时,基本类型可以直接交互。
官方解释:https://developer.android.com/topic/libraries/support-library/index.html 参考:http://www.jianshu.com/p/a5aa5f209895 1. 为什么要提供Support Library 最主要的原因就是:为了能在低版本的Android系统上使用高版本的SDK才具有的新功能、新特性。
先附上EventBus的git地址 EventBus,就按照名字翻译来说 事件总线 ,官方的说法是 EventBus is a publish/subscribe event bus optimized for Android. 也就是 eventbus是Android发布/订阅事件总线 。
相关文章
- [Android]calabash-android再深入
- 【黑马Android】(02)短信发送器/布局演示/android下单位/android下Junit/保存数据/android下权限/xml解析和序列化
- Android Studio 错误 Duplicate files copied in APK META-INF/LICENSE.txt解决方案
- Android中如何使用列表对话框
- 95、Android下在onCreate中获取控件的宽度和高度(通过回调)
- macos安装android studio(Android Studio 2021.1.1)
- Android开发学习---使用Intelij idea 13.1 进行android 开发
- Android内存性能优化(内部资料总结)
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- [Android]ListView性能优化之视图缓存
- Android 12.0 屏蔽FallbackHome机制去掉android正在启动直接进入默认Launcher功能实现
- Android 9.0 ResolverActivity.java多个app选择界面去掉始终保留仅有一次
- Android NDK调试出错Unknown Application ABI, Unable to detect application ABI's的解决方式
- 关于android的设备管理器-DevicePolicyManager(二)
- Android AIDL使用特定的解释
- Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
- Android系统设置— android.provider.Settings
- Ubuntu中Android SDK Manager无法更新解决办法
- 【2022年最新】Android大厂面试174题+答案解析,限时分享
- android 组件化在项目中的使用
- Android ffmpeg yuv原始数据写入yuv文件
- Android系统信息获取 之三:IMSI号和IMEI解释