添加依赖

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单元测试环境搭建采坑记录相关推荐

  1. Flutter之Android Studio环境配置采坑记录

    Flutter之Android Studio环境配置 IDE和SDK的安装 Device配置 AVD Genymotion 安装 ADB设置 AS中安装Genymotion插件 踩坑记录 IDE和SD ...

  2. windows10 kafka 环境搭建 踩坑记录

    一.下载网站 http://kafka.apache.org/downloads 选择二进制下载 二.启动方式 分别启动Zookeeper.Kafka .\bin\windows\zookeeper- ...

  3. Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)

    Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...

  4. 【原作者:吴秦(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 ...

  5. 移动安全测试框架-MobSF环境搭建

    文章目录 一.MobSF是什么? 二.环境搭建 1.环境说明 2.静态环境 3.动态环境 4.MobSF搭建 5.遇到到问题 一.MobSF是什么? 移动安全框架(MobSF)是一种自动.一体化的移动 ...

  6. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  7. Android平台招商银行“一网通”支付对接采坑记

    公司最近的App中需要做支付功能,支付中需要支持微信支付.支付宝支付.一网通支付.本文主要记录在对接Android平台中的"一网通"过程中遇到的坑,如果有类似需求的朋友,可供你参考 ...

  8. poc测试环境准备_华为桌面云 【环境搭建类】 Poc测试经验总结-环境搭建

    Poc测试经验总结-环境搭建 1 内容概要 使用现场服务器.交换机.光存储,搭建Poc测试环境. 2 版本信息 FusionSphereV100R005C10:FusionSphere V100R00 ...

  9. 【问题解决】Android JDK版本不匹配导致崩溃踩坑记录

    [问题解决]Android JDK版本不匹配导致崩溃踩坑记录 部分机型反馈崩溃问题 谷歌回复与解决方案 Android打包脱糖操作 对比与排查 总结 前几天同事遇到一个非常诡异的报错,紧急处理后,趁着 ...

最新文章

  1. CSS之布局(盒子模型—边框)
  2. 擒贼先擒王,简单谈一下JavaScript作用域链(Scope Chain)
  3. SPI/I2S调试心得与经验总结
  4. guid主分区表损坏怎么办_轻钢龙骨隔墙怎么办?轻钢龙骨隔墙的做法
  5. Spring quartz 并发性研究
  6. 正常使用 flex profiler 解决 Socket timeout
  7. (C#)如何使文本框响应回车
  8. 关闭eureka注册中心
  9. Django支付宝自动转账功能(一)
  10. 前端常见跨域解决方案
  11. 计算机管理主要是作业管理和什么管理,计算机四级之作业管理试题
  12. MyBatis-Plus通过注解的方式绑定一对多查询
  13. L2-006 树的遍历(建树)
  14. 小米刷机降级(自测红米note5)
  15. 为什么开发移动端web不使用jQuery
  16. 富士相机设置传原图_「富士相机」机身设置分享,摄影小白也可以拍摄到胶片感的照片...
  17. MySQL数据库张素青答案_MySQL数据库技术与应用
  18. 全球领导人齐聚一堂,出席10月14日召开的2021年全球包容性增长峰会
  19. lightOJ 1278
  20. 通过键盘输入(Java语言)

热门文章

  1. fence机制 linux_Linux的企业-高可用集群Haproxy+corosync+pacemaker+fence
  2. 微信群之社群经济的魔力
  3. Spring之父Rod Johnson
  4. 【视频文稿】车载Android应用开发与分析 - AOSP的下载与编译
  5. python学习相关03
  6. 2021-2027全球与中国塑料热成型产品市场现状及未来发展趋势
  7. NDK开发_cwin配置+编程简单步骤
  8. android apk程序,一个完整的Android应用程序(3)
  9. 2.Orange安装
  10. java用逆波兰表达式实现字符串计算器