当前位置: 首页 > news >正文

android Junit4编写自测用例

10多年的android开发经验,一直以来呢,也没有使用过android自带的测试代码编写。说来也惭愧。今天也花了点时间稍微研究了下。还挺简单。接下来就简单的说一下。

新建工程

直接默认新建一个工程,就会有两个目录androidTest和test(unitTest)两个功能区。分别有ExampleUnitTest和ExampleInstrumentedTest示例代码。
请添加图片描述

gradle相关的:AndroidJUnitRunner,junit,espresso 都已经默认搞好,所以不用处理。

一般情况,我们尽量使用真机的调试方式,即androidTest里面写测试代码。因为有的比如我们需要在application初始化的代码,或与android api相关的代码。谁没有真机就不要来搞笑啦。

测试代码

  1. 类名追加@RunWith(AndroidJUnit4::class)注解;
  2. 函数追加@Test;
  3. 如果想要android的context,则通过 InstrumentationRegistry.getInstrumentation().targetContext 得到。

老版本的android test要求类名以Test结尾。就这么简单。

@RunWith(AndroidJUnit4::class)
class JsonTest {@Testfun useAppContext() {// Context of the app under test.val appContext = InstrumentationRegistry.getInstrumentation().targetContextassertEquals("com.xxx.xxx", appContext.packageName)}@Testfun testJson() {val bean1 = Bean("first", 1)val bean1Str = bean1.toJsonString()val revert1 = bean1Str.fromJson<Bean>()val list = listOf(bean1)val revertList = listStr.fromJsonList<Bean>()logd("beans1 $bean1Str bean2str $bean2Str $listStr $revertList")}
}

编译结果

引入注意Test开头

test相关的gradle引入,全部使用test来开头。
请添加图片描述
默认一般是不需要修改的。如果你的项目是已经移除过,现在想添加Test,则新建一个工程来参考着加回来。

运行

我们可以看到,运行测试函数的时候,有选择。直接运行即可。
请添加图片描述
他会开始一堆Test相关的编译 :app:packageDebugAndroidTest等等,最终其实产物是包含了androidTest代码。
请添加图片描述
通过对比二者的反编译结果知道:
androidTest apk多了很多测试代码,而没有的apk,则不包含这些,因此,大家也不用担心有冗余的测试代码会被包含到release工程去的。放心大胆使用。
请添加图片描述

http://www.lryc.cn/news/142213.html

相关文章:

  • arcgis:画一幅自己城市的shp地图
  • 采购油封时要考虑的因素
  • 【无标题】科目一笔记
  • java八股文面试[数据结构]——HashMap和HashTable区别
  • 乐趣无限:10款基于Pygame的经典游戏合集
  • php检测数组是否存在某个键,和是否存在某个变量
  • c++中的const与constexpt的区别
  • android系统启动流程之SystemServer运行过程
  • Leetcode 1812。判断国际象棋棋盘中一个格子的颜色
  • 9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名
  • 计算机竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统
  • 基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。
  • 合宙Air724UG LuatOS-Air LVGL API控件--曲线 (Arc)
  • 09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)
  • Visual Studio 2017安装和项目配置
  • 【提升接口响应能力的最佳实践】常规操作篇
  • Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决
  • 【OpenCV实战】1.OpenCV环境搭建,Mac M1系统,C++开发环境
  • Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能
  • 网络映射会遇到哪些困难
  • 【jvm】类的主动使用和被动使用
  • 如何选择合适的损失函数
  • Java常见的排序算法
  • 【C++】5、构建:CMake
  • 【ARP欺骗】嗅探流量、限速、断网操作
  • 初步认识OSPF的大致内容(第三课)
  • CSDN编程题-每日一练(2023-08-27)
  • 机器视觉之平面物体检测
  • C#开发WinForm之DataGridView开发
  • PDFPrinting.Net Crack