Android Junit 单元测试 | 依赖配置和编译报错解决
问题
为什么在依赖中添加了testImplement在build APK的时候还是会报错?是因为没有识别到test文件夹是test源代码路径吗?
最常见的配置有:
implementation- 所有源代码集(包括test源代码集)中都有该依赖库.testImplementation- 依赖关系仅在test源代码集中可用.androidTestImplementation- 依赖关系仅在androidTest源代码集中可用.
场景说明
创建一个新的 Android 项目时,默认情况下会得到以下三个源代码集。它们是
源代码集:
main: 包含应用程序代码androidTest: 包含称为 Instrumented tests 的测试test: 包含称为本地测试的测试本地测试与Instrumented测试的区别在于它们的运行方式。
参考Android新建项目的默认结构,在src目录下添加了test路径,用于单元测试(有的会自动标记是unitTest,同包名),Demo类名是ExampleUnitTest。
按照报错在build.gradle添加了相关依赖testImplementation,结果还是编译/Run的时候就报错了。
dependencies {testImplementation 'junit:junit:4.12'testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
报错信息是找不到类,很明确问题等同于没有导包成功。
error: cannot find symbol
assertEquals(4, 2 + 2);
^
symbol: method assertEquals(int,int)
解决方法
然后尝试在默认源代码文件夹src/java中新建UnitTest的类,提示要添加依赖配置,发现不一样的使用 implementation(这种是肯定的,显而易见,应用编译运行使用不需要testXxxx配置),
dependencies {implementation 'junit:junit:4.12'testImplementation 'junit:junit:4.12'
}

如果把Junit 的 implementation注释掉,一样是不能编译成功的。

总计:要想Run成功,必须添加编译时的依赖,而不是用testImplementation。
疑问
所以是跑单元测试的时候,不需要执行Run/Build,而是有其他Test的启动开关是吗?
其他资料
写给新手的 Android 单元测试指南 - 文章 - 开发者社区 - 火山引擎
Android 官方文档:Android 应用测试基础知识 | Android Developers。
相关文章:
Android Junit 单元测试 | 依赖配置和编译报错解决
问题 为什么在依赖中添加了testImplement在build APK的时候还是会报错?是因为没有识别到test文件夹是test源代码路径吗? 最常见的配置有: implementation - 所有源代码集(包括test源代码集)中都有该依赖库.testImplementation - 依赖关系仅在test源代码…...
ffmpeg视频滤镜: 裁剪-crop
滤镜简述 crop官网链接 > FFmpeg Filters Documentation crop滤镜可以对视频进行裁剪,并且这个滤镜可以接受一些变量比如时间和帧数,这样我们实现动态裁剪,从而实现一些特效。 滤镜使用 参数 out_w <string> ..…...
身份证归属地查询接口-在线身份证归属地查询-身份证归属地查询API
接口简介:输入身份证号码可查询到所属地区、出生年日月以及性别。 接口地址:https://www.wapi.cn/api_detail/60/167.html 在线核验:https://www.wapi.cn/icard.html 网站地址:https://www.wapi.cn 返回格式:json,xml,…...
ESP32 S3 怎么开发基于ESP-RTC的音视频实时交互的应用,用语AI陪伴的领域
在ESP32-S3平台上开发基于ESP-RTC的音视频实时交互应用,尤其是在AI陪伴领域,涉及到音视频数据的采集、编码、传输和解码。ESP32-S3 具备较强的处理能力,且拥有丰富的接口和模块支持,可以用来实现这种功能。以下是一个完整的开发方…...
车载测试分享:UDS诊断、ECU刷写、CAN一致性测试、网络通讯测试、CANoe使用、报文解析、问题定位分析
FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中…...
预算不够,怎么跟KOL砍价?(内附砍价模板)
在当今的数字营销时代,海外红人(KOL)的影响力不容小觑。他们的一篇帖子、一个视频,甚至是一张照片,都有可能为企业带来巨大的流量和销量。 当企业满怀希望地找到一位粉丝众多、影响力强的KOL,准备洽谈合作…...
C#从零开始学习(GameObject实例)(unity Lab3)
这是书本中第三个unity Lab 在这次实验中,将学习如何使用C#编写代码用unity编写C#代码 GameObject实例 本次将完成的工作 将游戏资产配置在文件夹中创建材质把GameObject变成预制件脚本控制游戏防止球体重叠 将游戏资产配置在文件夹中 Script放代码 Prefabs放预制件 MAteria…...
谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践
谷歌最近宣布了导航 SDK,它可以让您将熟悉的 Google 地图逐向导航体验无缝集成到您的 Android 和 iOS 应用程序中。 这篇博文概述了一些最佳实践,您可以使用这些实践为您的 Android 应用程序使用导航 SDK 构建流畅、一致且可靠的导航体验。 与导航地图…...
什么是 VolTE 中的 Slient Redial?它和 CSFB 什么关系?
目录 1. 什么是 Silent Redial(安静的重拨号)? 2. Silent Redial 信令流程概述 3. 总结 Silent Redial 和 CSFB 啥关系? 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习指导都…...
docker 部署单节点的etcd以及 常用使用命令
docker部署etcd $ docker run -d --name etcd-server -p 2379:2379 -p 2380:2380 quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd -name my-etcd-1 -advertise-client-urls http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 -initial-advertise-peer-urls http…...
华为开放式耳机测评,南卡 、华为、Cleer开放式耳机超深度横评
近年来,开放式蓝牙耳机因其独特的设计和优势受到了越来越多消费者的青睐。其实对于开放式耳机,大家都没有一个明确的概念,可能会为了音质的一小点提升而耗费大量的资金,毕竟这是一个无底洞。 作为在过去一年体验过不下20款开放式耳…...
【Power Query】List.Select 筛选列表
List.Select 筛选列表 ——在列表中返回满足条件的元素 List.Select(列表,判断条件) 不是列表的可以转成列表再筛选,例如 Record.ToList 不同场景的判断条件参考写法 (1)单条件筛选 列表中小于50的数字 List.Select({1,99,8,98,5},each _<50) (2)多条件筛…...
Spring--4
SpringWeb 概念 是Spring框架的一个模块,基于Servlet的一个原始Web框架。 SpringWEB 运行流程 描述:前端用户请求发送的后端以后,先经过前端控制器DispatcherServlet(再次之前也可能有过滤器的存在),经过前端控制器解析后&…...
django celery 定时任务 Crontab 计划格式
Celery 定时任务教程 Celery 是一个强大的异步任务队列/作业队列基于分布式消息传递的开源项目。它广泛用于处理各种类型的后台任务,例如发送电子邮件、处理图像、数据分析和视频转换等。 本文将介绍如何使用 Celery 实现定时任务,包括: 安…...
动态应用程序安全测试 (DAST) 工具 Fortify WebInspect
Fortify WebInspect 是一种动态应用程序安全测试 (DAST) 工具,可识别所部署的Web 应用程序和服务中的应用程序漏洞。 OpenText™ 推出的 Fortify WebInspect 是一种自动化DAST 解决方案,可提供全面的漏洞检测能力并有助于安全专业人士和 QA 测试人员识别安全漏洞和…...
深入解析东芝TB62261FTG,步进电机驱动方案
TB62261FTG是一款由东芝推出的两相双极步进电机驱动器,采用了BiCD工艺,能够提供高效的电机控制。这款芯片具有多种优秀的功能,包括PWM斩波、内置电流调节、低导通电阻的MOSFET以及多种步进操作模式,使其非常适合用于需要精确运动控…...
Vue 常用的狗钩子函数
beforeCreate(){ console.log(刚刚创建实例); },created(){console.log(实例创建完成);},beforeMount(){console.log(模板编译之前 ); },mounted(){/* 请求数据,操作Dom时常用 */console.log(实力挂载完成);},beforeUpdate(){console.log(更新前)},update…...
【机器学习基础】激活函数
激活函数 1. Sigmoid函数2. Tanh(双曲正切)函数3. ReLU函数4. Leaky ReLU函数 1. Sigmoid函数 观察导数图像在我们深度学习里面,导数是为了求参数W和B,W和B是在我们模型model确定之后,找出一组最优的W和B,使…...
nnMamba用于糖尿病视网膜病变检测测试
1.代码修改 源码是针对3D单通道图像的,只需要简单改写为2D就行,修改nnMamba4cls.py代码如下: # -*- coding: utf-8 -*- # 作者: Mr Cun # 文件名: nnMamba4cls.py # 创建时间: 2024-10-25 # 文件描述:修改nnmamba,使…...
【Spring MVC】创建项目和建立请求连接
我的主页:2的n次方_ 1. MVC MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。 View (视图): 指在应⽤程序中专⻔⽤来与浏览器进⾏交互&…...
从玩具到生产:基于run-llama/rags构建模块化RAG系统的工程实践
1. 项目概述:从“玩具”到“生产力”的RAG系统构建如果你最近在关注大语言模型的应用落地,那么“RAG”这个词一定高频出现在你的视野里。RAG,即检索增强生成,它试图解决大模型“一本正经胡说八道”和“知识陈旧”两大核心痛点。简…...
NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来
NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来 很多人第一次遇到 NCCL watchdog timeout,第一反应都是三件事:查网络、调大 timeout、怀疑 NCCL 又炸了。这个顺序经常不够用。因为在很多真实训…...
LangGraph大模型脚手架实战:揭秘6种爆款智能体设计模式,玩转生产级Agent开发!
最近Herness大火,我就在反思,我们在日常进行智能体开发的过程中,是否也在做类似的事,我们用过claude code sdk、codex sdk、copilot cli等通用agent做封装,也用过dify或者coze搭工作流,也用过langchain做过…...
Spring Boot项目整合阿里云OSS上传,如何避免Nginx代理下的405坑?
Spring Boot整合阿里云OSS上传的Nginx避坑指南:彻底解决405错误 在前后端分离架构中,文件上传功能几乎是每个Web应用的标配。当我们将Spring Boot与阿里云OSS结合使用时,Nginx作为反向代理常常会带来一个棘手的405 Method Not Allowed错误。这…...
告别PPO采样地狱!用SAC算法在连续控制任务中实现高效训练(附PyTorch代码)
SAC算法实战:突破PPO采样瓶颈的连续控制解决方案 在机器人控制、自动驾驶和游戏AI开发中,强化学习工程师们经常面临一个共同困境:算法需要与环境进行海量交互才能学到有效策略。以Ant机器人行走任务为例,传统PPO算法可能需要500万…...
Watercolor风格在MJ中被严重低估的3个底层能力:纸基模拟、颜料扩散建模、干湿叠加逻辑(Adobe资深插画师联合验证)
更多请点击: https://intelliparadigm.com 第一章:Watercolor风格在MJ中被严重低估的3个底层能力:纸基模拟、颜料扩散建模、干湿叠加逻辑(Adobe资深插画师联合验证) 纸基模拟:不只是纹理,而是…...
S32K144开发板调试实战:除了点灯,如何用S32DS的调试窗口快速排查变量异常问题?
S32K144开发板调试实战:变量异常排查与高效调试技巧 调试嵌入式系统时,最令人头疼的莫过于程序看似正常运行,但某些变量值却莫名其妙地偏离预期。作为一名长期使用S32 Design Studio(S32DS)进行S32K144开发的工程师&a…...
Hive内部表 vs 外部表:选错一次,数据全丢?结合HDFS路径详解核心区别与选型指南
Hive内部表与外部表:数据安全与架构设计的深度抉择 在数据仓库与大数据分析领域,Hive作为构建在Hadoop之上的数据仓库工具,其表类型的选择往往被初学者视为简单的语法差异。然而,当生产环境中TB级的数据因为一个DROP TABLE命令而永…...
保姆级教程:用Winbox给ROS配置一线多拨,实测200M宽带叠加效果(附避坑指南)
家庭网络优化实战:Winbox配置多拨提升宽带利用率 家里装了200M宽带,但下载大文件时总觉得速度没跑满?多人同时在线看4K视频就开始卡顿?其实通过简单的路由器配置,你完全有可能突破运营商单线限制,让宽带利用…...
Mac小白必看:手把手教你找回丢失的Recovery HD分区(附diskutil命令详解)
Mac用户必备技能:深度解析Recovery HD分区修复与diskutil实战指南 当你按下CommandR却只看到闪烁的问号图标时,那种手足无措的感觉我深有体会。Recovery HD分区就像是Mac的急救箱,藏着系统恢复、磁盘修复和时间机器备份等关键工具。但很多用户…...
