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

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。

App Project File Structure
应用文件结构

按照报错在build.gradle添加了相关依赖testImplementation,结果还是编译/Run的时候就报错了。

dependencies {testImplementation 'junit:junit:4.12'testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
build.gradle dependencies
build.gradle dependencies依赖配置

报错信息是找不到类,很明确问题等同于没有导包成功。

error: cannot find symbol
        assertEquals(4, 2 + 2);
        ^
  symbol:   method assertEquals(int,int)

Build Output
Build Output 编译报错信息

解决方法

然后尝试在默认源代码文件夹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。

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

相关文章:

  • ffmpeg视频滤镜: 裁剪-crop
  • 身份证归属地查询接口-在线身份证归属地查询-身份证归属地查询API
  • ESP32 S3 怎么开发基于ESP-RTC的音视频实时交互的应用,用语AI陪伴的领域
  • 车载测试分享:UDS诊断、ECU刷写、CAN一致性测试、网络通讯测试、CANoe使用、报文解析、问题定位分析
  • 预算不够,怎么跟KOL砍价?(内附砍价模板)
  • C#从零开始学习(GameObject实例)(unity Lab3)
  • 谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践
  • 什么是 VolTE 中的 Slient Redial?它和 CSFB 什么关系?
  • docker 部署单节点的etcd以及 常用使用命令
  • 华为开放式耳机测评,南卡 、华为、Cleer开放式耳机超深度横评
  • 【Power Query】List.Select 筛选列表
  • Spring--4
  • django celery 定时任务 Crontab 计划格式
  • 动态应用程序安全测试 (DAST) 工具 Fortify WebInspect
  • 深入解析东芝TB62261FTG,步进电机驱动方案
  • Vue 常用的狗钩子函数
  • 【机器学习基础】激活函数
  • nnMamba用于糖尿病视网膜病变检测测试
  • 【Spring MVC】创建项目和建立请求连接
  • 台达A2伺服
  • ReactOS系统中搜索给定长度的空间地址区间中的二叉树
  • Postgresql中和时间相关的字段类型及其适用场景
  • 储能蓝海:技术革新与成本骤降引爆市场
  • java抽象类和接口
  • 法治在沃刷积分-刷文章浏览数
  • 【深度学习实验七】 自动梯度计算
  • JAVA毕业设计192—基于Java+Springboot+vue的个人博客管理系统(源代码+数据库+万字论文+开题+任务书)
  • must be ‘pom‘ but is ‘jar‘解决思路
  • STM32启动文件浅析
  • h5页面与小程序页面互相跳转