1. verifyNoMoreInteractions(listener);//验证没有更多交互
  2. @Mock private PlaybackParametersListener listener; initMocks(this);在使用 Androidunit4 时同样可以使用 Mockito;
  3. assertThat(mediaClock.syncAndGetPositionUs( false)).isEqualTo(TEST_POSITION_US);
  4. @Config(sdk = 29) // Allows using MediaFormat.getKeys() to make assertions over the expected keys.//写在类名上方
  5. 单元测试:上下文:context = InstrumentationRegistry.getTargetContext();
  6. Context applicationContext = ApplicationProvider.getApplicationContext()
  7. 反射调用私有静态方法
        //调用私有静态的Method method = Camera1Enumerator.class.getDeclaredMethod("getCameraInfo", Integer.class);method.setAccessible(true);android.hardware.Camera.CameraInfo cameraInfo = (android.hardware.Camera.CameraInfo) method.invoke(mCamera1Enumerator, 0);Assert.assertNotNull( cameraInfo);
  1. 屏蔽静态代码块加载:@SuppressStaticInitializationFor(“com.rz.paas.internal.RZRtcEngineImpl”)//阻止静态代码块运行

  2. 反射回去静态属性‘
    private Class reflectClass, reflectRecord; //用以获取私有属性
    private Field mbluetoothManager, maudioManager;
    reflectClass = mDBAudioManager.getClass();
    reflectRecord = mDBAudioRecord.getClass();
    mbluetoothManager = reflectClass.getDeclaredField(“bluetoothManager”);//私有属性
    mbluetoothManager.setAccessible(true);
    //获取其值
    mbluetoothManager.get(mDBAudioManager)
    //设置其值
    mbluetoothManager.set(mDBAudioManager,value)

  3. 描述

/*** 2021-08-06 Unit tests for {@link EncodedImage}.*/
  1. 测试异常 @Test(expected = IllegalStateException.class)
  2. 抽象类的反射
    私有属性:
私有属性的变量 = 抽象类 .class.getDeclaredField("私有属性");
私有属性的变量.setAccessible(true);

方法

AbstractClass.class.getMethod("getName").invoke(子类对象);
  1. cameraName
cameraName = "Camera 0, Facing back, Orientation 90";
cameraName_Back = "Camera 1, Facing front, Orientation 270";
  1. 单元测试测试线程
Thread thread = new Thread(){@Overridepublic void run() {super.run();for (int i = 0; i < 5; i++) {System.out.println(i);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}
};@Test
public void createTextureBufferWithModifiedTransformMatrix() throws Exception{thread.start();thread.join();System.out.println("线程执行结束");
}

thread.join(); 等待线程执行结束!

  1. 测试回调
/*** 回调接口*/
interface Callback {void onStart();void onProgress(int progress);void onFinish();
}/*** 异步方法*/
static class AsyncDemo {private int len = 0;private Callback callback = null;public AsyncDemo(int len, Callback cb) {this.len = len;this.callback = cb;}public void doJob() {new Thread() {@Overridepublic void run() {if (null != callback) {callback.onStart();}try {for (int i = 0; i < len; i++) {if (null != callback) {callback.onProgress(i);}sleep(1000);}} catch (InterruptedException e) {e.printStackTrace();} finally {if (null != callback) {callback.onFinish();}}}}.start();}
}private Object mLock = new Object(); //同步锁
private int mCount = 0; //加解锁条件@Test
public void testBlindCallback() {System.out.println("testBlindCallback");Callback cb = new Callback() {public void onStart() {System.out.println("onStart");}public void onProgress(int progress) {System.out.println("onProgress: " + progress);}public void onFinish() {System.out.println("onFinish");synchronized (mLock) {mCount = 0;mLock.notifyAll();//回调执行完毕,唤醒主线程}}};System.out.println("before AsyncDemo doJob");AsyncDemo demo = new AsyncDemo(5, cb);demo.doJob();//作用类似于 thread.join(); 等待线程执行结束synchronized (mLock) {mCount = 1; //设置锁条件while (mCount > 0) {try {mLock.wait();//等待唤醒} catch (InterruptedException e) {e.printStackTrace();}}}System.out.println("after AsyncDemo doJob");
}输出结果:
testBlindCallback
before AsyncDemo doJob
onStart
onProgress: 0
onProgress: 1
onProgress: 2
onProgress: 3
onProgress: 4
onFinish
after AsyncDemo doJob
  1. 初始化无参构造器
    mCamera1Session = Camera1Session.class .newInstance();
  2. Mac 运行 .sh 文件, sh ./build_libs.sh
  3. 一个Volatile;
@Test
public void test() throws Exception {AoFlag aoFlag = new AoFlag();aoFlag.start();for (int i = 0; i < 300; i++) {if (aoFlag.isFlag())Log.e("TAG\t\t\t", "test: ~~~ "+i);}aoFlag.join();
}
class AoFlag extends Thread {boolean flag = false;public boolean isFlag() {return flag;}@Overridepublic void run() {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}flag = true;Log.e("TAG\t\t\t", "run: " + flag);}
}
//输出只有:TAG           : run: true
  1. 乐观锁、悲观锁;
  2. Synchronized
  3. 理解协程、LiveData 和 Flow
  4. 没有LiveData如何实现轻松MVVM

声明

上述内容从网上搜集整理,如有侵权请私信我速删。

Android 单元测试中遇到的一些问题汇总相关推荐

  1. Android开发中遇到的错误处理汇总(持续更新)

    ------------------------------------- read the fucking source code-------------------------------- A ...

  2. Android单元测试读写文件,如何在Android单元测试中读取仅测试文件

    对于我的Android应用程序,我正在编写需要读取一些文件的单元测试. 由于这些是仅测试文件,因此我不希望它们出现在res文件夹中,因为我不希望它们最终出现在最终的.apk文件中. 我想做与此问题类似 ...

  3. Android单元测试中AndroidJUnit4获取context

    在AndroidJUnit4直接通过getContext()获取到的context并不是当前APP的context,而是instrumentation的context,应使用以下方法来获取contex ...

  4. Android单元测试全解

      自动化测试麻烦吗?说实在,麻烦!有一定的学习成本.但是,自动化测试有以下优点: 节省时间:可以指定测试某一个activity,不需要一个个自己点 单元测试:既然Java可以进行单元测试,Andro ...

  5. Android单元测试研究与实践

    处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地.单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容 ...

  6. 关于Android单元测试

    [转载自美团点评技术团队的一篇文章,原文在这里:http://http://tech.meituan.com/Android_unit_test.htmld_unit_test.html.若涉嫌侵犯权 ...

  7. android studio资产目录,在Android Studio中设置单元测试的自定义资产目录

    我们对使用仅需要进行单元测试的资产的Android应用程序执行单元测试是不常见的要求. 使用基于Eclipse的SDK这是简单明了的 – 测试项目是一个单独的项目,其自有资产文件夹.使用Android ...

  8. 关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。

    关于Android Studio单元测试中"Method d in android.util.Log not mocked."问题的解决. 点开链接 这就是解决方案.(这主要是由于 ...

  9. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

最新文章

  1. 免费直播:主流深度框架对比:总有一款适合你~
  2. git解决代码提交冲突
  3. 高并发MPP查询引擎Impala初识
  4. php网站入门鹿泉银山,01PHP编程新手入门第一步
  5. Linux系统检测工具 三(Free,Top,ps,Vmstat,Sysstat)
  6. 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交
  7. [Swift]LeetCode323. 无向图中的连通区域的个数 $ Number of Connected Components in an Undirected Graph...
  8. B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
  9. c语言语句结束的标准,C语言的语句要求以哪种符号结束?
  10. 2020五一数学建模比赛总结
  11. 计算机专业保研预推免面试记录
  12. 普元EOS开发总结——前端框架
  13. win10家庭版,双击bat文件无法运行_20200120
  14. ubuntu 18.04安装微信
  15. dreamweaver html模版,dreamweaver利用预设模板来快速的架构一个简易网站
  16. 关于Landsat所有知识都在这里
  17. 服务器宕机是什么意思怎处理解决?
  18. 黑暗料理-花菜+肉丝+木耳
  19. 日系插画学习笔记(五):日系角色脸部画法-1头部
  20. 第11期 DApp 榜单:这是一篇让DD君重伤住院的内容

热门文章

  1. 阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)
  2. html主页面设计如何丰富可视化元素,数据可视化设计如何丰富页面?
  3. java PTA 找到出勤最多的人
  4. aiohttp mysql 线程池_协程一例:用aiohttp代替requests写异步爬虫
  5. aiohttp mysql_aiohttp 怎么复用连接池
  6. 联发科MT6167固件编译和参数配置方法
  7. 二手手机十分管用的检查方法
  8. 15春到夏的逐渐绽开
  9. 分布式 Web UI 自动化系统的设计与实现
  10. Performance Analysis of Rateless-CodedNon-Orthogonal Multiple Access over Nakagami-m Fading Channel