android 人品测试,Android单元测试环境搭建采坑记录
添加依赖
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
// App's dependencies, including test
implementation 'com.android.support:support-annotations:27.1.1'
// Testing-only dependencies
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
踩坑
以为环境配置好了,可以直接写测试用例run了是吧,此时无论你是什么问题,最终都是告诉你/app/build/outputs/apk/androidTest/app-debug-AndroidTest.apk does not exist on disk.或者你人品好,真的就没问题,当然大部分人应该是没问题的。但是本宝傻眼中,然后开始一步步采坑。
引入环境依赖后,可先使用./gradlew connecteAndroidTest命令检查测试环境。然后可使用./gradlew assembleDebug和./gradlew assembleDebugAndroidTest生成test包,在这一过程中会报错具体原因,而不是只显示apk does not exist on disk.
引入测试框架之后造成65536问题
$ ':transformDexArchiveWithExternalLibsDexMergerForDebug'
$ ava.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex"
$ com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
以上问题,统统都是合并dex最大方法数的问题。
所以只需要配置multiDex的解决方案就好了。如果项目中引入了子Modul,记得需要在每个子module里面配置multiDex。
至此,你可能assembleDebug没有问题,但依旧无法找到apk,然后开始google。
Gradle-aware Make
Gradle-aware Make.png
实际上,这个默认配置是存在Gradle-aware Make的,是没有问题的。哪怕你按照他所说再加一个空白的Gradle-aware Make,也是不起作用的。他描述的这一问题其实在官方文档中时有关JUnit测试可能会编译两次的解决方案。
官方文档.png
Android Studio版本缓存问题
Android Studio版本.png
我依照这个指导,删除了我之前版本3.0的一些遗留缓存文件,不过当时的我的问题并不是主要在这里,所以并不知道实际有没有影响。
采用Gradle projects的build
Gradle projects的build.png
采用此方法,并且可以尝试点击assembleAndroidTest、assembleDebug、assembleDebugAndroidTest、installDebug、installDebugAndroidTest等按钮来编译生成apk,或许有用。
我的问题所在
其实bb了这么多,这些并不是我真正的问题所在。
因为我现在所搞的是一个年久依旧在修的项目,里面有无数前辈的耕耘,所以最终在build.geadle文件中发现一段这样的代码:
build.geadle.png
它会使用gralde编译的任务名字,如果包含这些字,这个任务就不可用,则不会继续执行,则不会生成apk了。可怕,最后居然是这样,是我没仔细看这个文件,否则也不会踩前面那么多坑了。
test依赖库和androidsupport库版本问题
库内部有引用support-annotations,如果你已自己引入此库,如果版本一致,会报多个asm-license.txt文件问题,此时只需在删除这个文件即可。
如果不一致,可在test依赖中剃除annotations库即可。
关于stackoverflow上的其他回答
禁用instant run:这主要是由于你使用了jack编译器。并且jack编译器现在已不推荐。对于未使用jack编译器的项目,instant run对此并不影响。
官方文档
invalidating the caches and restarting:很多时候,这个很有用,但是我是gradle有问题,因此并不知晓针对此问题是否可行。
一加手机的问题
至此,环境都已ok,可以开始正常运行单测了。但是在一加手机上,run起来,没有成功没有失败,一直是在过程当中,无法正常运行。目前此情况在一加3T手机上出现,小米三星暂未出现,原因不明,知道了再补吧。
参考文档
android 人品测试,Android单元测试环境搭建采坑记录相关推荐
- Flutter之Android Studio环境配置采坑记录
Flutter之Android Studio环境配置 IDE和SDK的安装 Device配置 AVD Genymotion 安装 ADB设置 AS中安装Genymotion插件 踩坑记录 IDE和SD ...
- windows10 kafka 环境搭建 踩坑记录
一.下载网站 http://kafka.apache.org/downloads 选择二进制下载 二.启动方式 分别启动Zookeeper.Kafka .\bin\windows\zookeeper- ...
- Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)
Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...
- 【原作者:吴秦(Tyler)http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html】Android开发之旅:环境搭建及HelloWo
Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 801360 阅读, 138 评论, 收藏, 编辑 --工欲善其事必先利其器 引言 本系列适合0 ...
- 移动安全测试框架-MobSF环境搭建
文章目录 一.MobSF是什么? 二.环境搭建 1.环境说明 2.静态环境 3.动态环境 4.MobSF搭建 5.遇到到问题 一.MobSF是什么? 移动安全框架(MobSF)是一种自动.一体化的移动 ...
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
- Android平台招商银行“一网通”支付对接采坑记
公司最近的App中需要做支付功能,支付中需要支持微信支付.支付宝支付.一网通支付.本文主要记录在对接Android平台中的"一网通"过程中遇到的坑,如果有类似需求的朋友,可供你参考 ...
- poc测试环境准备_华为桌面云 【环境搭建类】 Poc测试经验总结-环境搭建
Poc测试经验总结-环境搭建 1 内容概要 使用现场服务器.交换机.光存储,搭建Poc测试环境. 2 版本信息 FusionSphereV100R005C10:FusionSphere V100R00 ...
- 【问题解决】Android JDK版本不匹配导致崩溃踩坑记录
[问题解决]Android JDK版本不匹配导致崩溃踩坑记录 部分机型反馈崩溃问题 谷歌回复与解决方案 Android打包脱糖操作 对比与排查 总结 前几天同事遇到一个非常诡异的报错,紧急处理后,趁着 ...
最新文章
- CSS之布局(盒子模型—边框)
- 擒贼先擒王,简单谈一下JavaScript作用域链(Scope Chain)
- SPI/I2S调试心得与经验总结
- guid主分区表损坏怎么办_轻钢龙骨隔墙怎么办?轻钢龙骨隔墙的做法
- Spring quartz 并发性研究
- 正常使用 flex profiler 解决 Socket timeout
- (C#)如何使文本框响应回车
- 关闭eureka注册中心
- Django支付宝自动转账功能(一)
- 前端常见跨域解决方案
- 计算机管理主要是作业管理和什么管理,计算机四级之作业管理试题
- MyBatis-Plus通过注解的方式绑定一对多查询
- L2-006 树的遍历(建树)
- 小米刷机降级(自测红米note5)
- 为什么开发移动端web不使用jQuery
- 富士相机设置传原图_「富士相机」机身设置分享,摄影小白也可以拍摄到胶片感的照片...
- MySQL数据库张素青答案_MySQL数据库技术与应用
- 全球领导人齐聚一堂,出席10月14日召开的2021年全球包容性增长峰会
- lightOJ 1278
- 通过键盘输入(Java语言)
热门文章
- fence机制 linux_Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence
- 微信群之社群经济的魔力
- Spring之父Rod Johnson
- 【视频文稿】车载Android应用开发与分析 - AOSP的下载与编译
- python学习相关03
- 2021-2027全球与中国塑料热成型产品市场现状及未来发展趋势
- NDK开发_cwin配置+编程简单步骤
- android apk程序,一个完整的Android应用程序(3)
- 2.Orange安装
- java用逆波兰表达式实现字符串计算器