当前位置: 首页 > 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工程去的。放心大胆使用。
请添加图片描述

相关文章:

android Junit4编写自测用例

10多年的android开发经验&#xff0c;一直以来呢&#xff0c;也没有使用过android自带的测试代码编写。说来也惭愧。今天也花了点时间稍微研究了下。还挺简单。接下来就简单的说一下。 新建工程 直接默认新建一个工程&#xff0c;就会有两个目录androidTest和test(unitTest)两…...

arcgis:画一幅自己城市的shp地图

首先打开ArcGis10.6&#xff0c;点击带黄底的小加号&#xff0c;添加底图。 可以选择中国地图彩色版&#xff0c;然后双击&#xff0c;转动鼠标滑轮找到属于自己的城市。 点击-目录&#xff0c;在新建的文件夹里右击-新建-shapefile。 格式选择折线&#xff0c;先把主要河流道路…...

采购油封时要考虑的因素

对于依赖机械和设备的行业来说&#xff0c;油封的选择是一个关键的决定&#xff0c;以确保平稳运行并防止流体泄漏。由于有多种选择&#xff0c;了解购买油封时要考虑的关键因素对于确保适合特定应用至关重要。让我们深入研究一下在此选择过程中发挥关键作用的考虑因素。 1、运…...

【无标题】科目一笔记

载人超过核定人数 校车/公路客运汽车/旅游客运汽车 未达到20%&#xff0c;-6超过20%以上&#xff0c;-12 七座以上载客汽车 1. 超过20%以上未达到50%&#xff0c;-6 2. 超过50%以上未达到100%&#xff0c;-9 其他载客汽车 1. 超过20%以上未达到50%&#xff0c;-3 2. 超过50…...

java八股文面试[数据结构]——HashMap和HashTable区别

HashMap源码中的重要常量 DEFAULT_INITIAL_CAPACITY: HashMap的默认容量&#xff0c;16 MAXIMUM_CAPACITY&#xff1a; HashMap的最大支持容量&#xff0c;2^30 TREEIFY_THRESHOLD&#xff1a;Bucket中链表长度大于该默认值&#xff0c;转化为红黑树。 UNTREEIFY_THRESHOLD…...

乐趣无限:10款基于Pygame的经典游戏合集

​​​​​​引言 游戏开发一直是许多程序员和游戏爱好者追求的梦想。而Pygame作为一款功能强大的游戏开发库&#xff0c;为我们提供了实现各种有趣游戏的工具和接口。在本文中&#xff0c;我将向大家介绍10款基于Pygame的经典游戏合集&#xff0c;从简单的猜数字到刺激的飞机…...

php检测数组是否存在某个键,和是否存在某个变量

一、array_key_exists() array_key_exists() 是一个 PHP 内置的函数&#xff0c;用于判断数组中是否存在指定的键。该函数接收两个参数&#xff0c;第一个是键名&#xff0c;第二个是数组。 $arr array(name > Jack, age > 20, country > China);if (array_key_exi…...

c++中的const与constexpt的区别

c中的const与constexpr的区别 const const 是一种修饰符&#xff0c;用于声明一个只读的常量。它可以用于变量、函数参数和函数返回类型。声明为 const 的变量的值在初始化后就不能再改变。 适用场景&#xff1a; const 适用于声明运行时常量&#xff0c;在编译时无法确定值…...

android系统启动流程之SystemServer运行过程

SystemServer进程的启动流程&#xff1a;直接看代码&#xff1a; SystemServer是Java中的一个进程&#xff0c;执行入口是SystemServer.java.main(); SystemServer.java.main();-->new SystemServer().run();-->createSystemContext();//创建系统上下文:虽然SystemServe…...

Leetcode 1812。判断国际象棋棋盘中一个格子的颜色

国际棋盘问题&#xff1a; 给你一个坐标 coordinates &#xff0c;它是一个字符串&#xff0c;表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色&#xff0c;请你返回 true&#xff0c;如果是黑色&#xff0c;请返回 false 。 给定坐标…...

9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名

引言 最近一番在整理资料&#xff0c;之前买的PPT资源很大很多&#xff0c;但归类并不好&#xff0c;于是一番准备把这些PPT资源重新整理一下。统计了下&#xff0c;这些PPT资源大概有2000多个&#xff0c;一共30多G&#xff0c;一个一个手动整理这个投入产出比也太低了。 作为…...

计算机竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统

文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据…...

基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。

基于Java的旅游信息推荐系统设计与实现&#xff0c;springbootvue&#xff0c;MySQL数据库&#xff0c;前后端分离&#xff0c;完美运行&#xff0c;有三万字论文。 前台主要功能&#xff1a;登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…...

合宙Air724UG LuatOS-Air LVGL API控件--曲线 (Arc)

曲线 (Arc) 曲线控件&#xff0c;也可以称为弧。因为 Arc 本身就是弧&#xff0c;弧形的意思。根据控件的样子也能推测出它的使用场景&#xff0c;一般用在加载器(就是等待界面转的圈圈)或者数值显示&#xff0c;数值调节这些场景。曲线控件分了两个部分&#xff0c;前景和背…...

09-微信小程序 网络请求API(实现轮播广告和简易的聊天窗口)

09-微信小程序API网络请求(实现轮播广告和简易的聊天窗口) 文章目录 微信小程序API服务器域名配置注意网络相关APIrequestRequestTask 请求任务对象object.success 回调函数object.fail 回调函数案例代码&#xff08;实现轮播图&#xff09; WebSocket案例代码&#xff08;实现…...

Visual Studio 2017安装和项目配置

目录 前言1. What、Why and How1.1 What1.2 Why1.3 How 2. 安装3. 创建新项目4. 配置OpenCV库4.1 下载opencv安装包4.2 配置系统环境变量4.3 VS项目环境配置4.4 总结 5. 已有项目添加6. Tips6.1 常用快捷键6.2 字体和颜色选择6.3 配置编译路径 结语下载链接参考 前言 最近因为项…...

【提升接口响应能力的最佳实践】常规操作篇

文章目录 1. 并行处理简要说明CompletableFuture是银弹吗&#xff1f;测试案例测试结论半异步&#xff0c;半同步总结 2. 最小化事务范围简要说明编程式事务模板 3. 缓存简要说明 4. 合理使用线程池简要说明使用场景线程池的创建参数的配置建议 线程池的监控线程池的资源隔离 5…...

Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决

“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中&#xff0c;SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞&#xff0c;现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。 SharedArrayBuffer 是一种 JavaScript 对…...

【OpenCV实战】1.OpenCV环境搭建,Mac M1系统,C++开发环境

OpenCV环境搭建&#xff0c;Mac系统&#xff0c;C开发环境 一、步骤VSCode C环境安装运行CMake安装运行OpenCV 安装CMakeList 一、步骤 VSCode C环境安装CMake 安装OpenCV 安装CmakeList.txt VSCode C环境安装运行 访问官网 CMake安装运行 CMake官网 参考文档 OpenCV 安…...

Hyperf 如何做到用两个端口 9501/9502 都能连接 Websocket 服务以及多 Worker 协作实现聊天室功能

为何 Hyperf 能够在两个端口上监听 WebSocket 连接&#xff1f; 源码角度来看&#xff0c;在配置了多个 Servers 时&#xff0c;实际上&#xff0c;只启动了一个 Server 注&#xff1a;我之前接触的代码都是启动一个服务绑定一个端口&#xff0c;之前也看过 swoole 扩展的文档…...

搞懂 SAP Fiori 中的 RFC 连接:把后端系统、系统别名与 Launchpad 运行链路一次讲透

在很多 SAP Fiori 项目里,团队把注意力都放在 SAPUI5、OData、Fiori Elements、语义对象导航这些能力上,却常常在集成经典应用时踩坑。真正到了项目上线阶段,用户不会关心应用是 SAPUI5、Web Dynpro ABAP,还是 SAP GUI for HTML 实现的,他们只会问一句:为什么在 SAP Fior…...

Shopee风控算法逆向 - Unidbg补环境实战解析

1. Shopee风控算法逆向分析入门 最近在研究Shopee的风控机制时&#xff0c;我发现他们的Native层加密算法特别有意思。作为一个常年和移动安全打交道的开发者&#xff0c;今天想和大家分享下使用Unidbg模拟执行Shopee风控算法的完整过程。 Shopee作为东南亚头部电商平台&…...

RexUniNLU新手入门指南:3步搞定智能家居、金融、医疗场景意图识别

RexUniNLU新手入门指南&#xff1a;3步搞定智能家居、金融、医疗场景意图识别 1. 认识RexUniNLU&#xff1a;零样本意图识别利器 RexUniNLU是一款基于Siamese-UIE架构的轻量级自然语言理解框架&#xff0c;它能让你无需准备标注数据&#xff0c;仅通过简单的标签定义就能完成…...

ReactPy虚拟DOM终极指南:Python如何高效更新网页内容

ReactPy虚拟DOM终极指南&#xff1a;Python如何高效更新网页内容 【免费下载链接】reactpy Its React, but in Python 项目地址: https://gitcode.com/gh_mirrors/re/reactpy ReactPy作为Python领域的创新框架&#xff0c;让开发者能够使用Python语法构建交互式Web界面&…...

Qwen3-VL-8B助力AIGC内容创作:图文匹配与风格一致性检查

Qwen3-VL-8B助力AIGC内容创作&#xff1a;图文匹配与风格一致性检查 最近在折腾AIGC内容创作&#xff0c;我发现一个挺头疼的问题&#xff1a;用模型生成了一大堆图片&#xff0c;怎么快速判断哪张图最符合我的文字描述&#xff1f;或者&#xff0c;一个系列的海报做出来&…...

突破限制,让老旧Mac焕发新体验:OpenCore Legacy Patcher全解析

突破限制&#xff0c;让老旧Mac焕发新体验&#xff1a;OpenCore Legacy Patcher全解析 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大…...

签名计算效率工具:xhshow实现小红书API请求处理提速90%的技术原理揭秘

签名计算效率工具&#xff1a;xhshow实现小红书API请求处理提速90%的技术原理揭秘 【免费下载链接】xhshow 小红书xs纯算 小红书56版本xs 小红书个人主页 批量爬取数据 文章批量下载 小红书x-s x-t x-s-common x-b3-traceid search-id 旋转验证码参数纯算纯协议逆向 项目地址…...

实战指南:构建高性能离线语音识别系统的完整方案

实战指南&#xff1a;构建高性能离线语音识别系统的完整方案 【免费下载链接】whisper-base.en 项目地址: https://ai.gitcode.com/hf_mirrors/openai/whisper-base.en 在数据隐私日益受到重视的今天&#xff0c;本地化语音识别技术为处理敏感语音内容提供了安全可靠的…...

MATLAB实战:如何用最小二乘法搞定系统辨识(附完整代码)

MATLAB实战&#xff1a;最小二乘法在系统辨识中的工程应用指南 在工业控制、信号处理等领域&#xff0c;系统辨识是建立数学模型的关键步骤。想象一下&#xff0c;当你面对一组输入输出数据&#xff0c;却不知道背后的系统规律时&#xff0c;最小二乘法就像一把瑞士军刀&#x…...

GNSS/SINS组合导航实战:静基座精对准中的卡尔曼滤波参数调优技巧

GNSS/SINS组合导航实战&#xff1a;静基座精对准中的卡尔曼滤波参数调优技巧 在嵌入式导航系统开发中&#xff0c;静基座精对准是确保初始姿态精度的关键环节。许多工程师在调试卡尔曼滤波器时&#xff0c;常陷入参数试错的困境——Q矩阵该设多大&#xff1f;R矩阵如何匹配传感…...