Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-3.8/4.3.1/4.5.1/4.6.1 Powermock-1.6.6单元测试环境

基础配置以及常见错误


目前版本的Android Studio 3.6.3/4.0/4.1/4.2使用Robolectric-3.8/4.3.1/4.5.1/4.6.1,只能配合Powermock-1.6.6,不能高于这个版本PowerMock ,尽管软件源中的版本已经更新升级到2.0.7版本了,但是Robolectric并没有及时更新依赖。尝试过使用最新版本的PowerMock,结果很多莫名的报错。

如果 Windows 系统下出现如下提示,受限于Windows系统路径不能超过260个字符的限制

貌似Windows 10 Build 14352版中已经可以通过修改注册表去除260字符的路径长度限制了。

在项目/.idea/workspace.xml文件中添加一行代码如下

对于使用MultiDex的应用,如果报告如下错误:

需要在build.gradle中引入

例子测试代码:

注意,需要

才能使得配置生效。

如果发生如下错误:

JDK 1.7引入了代码校验,这个我们需要关闭这个功能才行,如下图:

可惜的是, 目前如果需要在Android Studio中运行或者测试单个测试用例,需要每个测试文件单独添加才行。

对于使用

运行测试的情况来说,需要在项目app/build.gradle下添加如下内容:

也可以添加到defaultConfig下面,如下:

这个问题更详细的解释如下:

脚本中运行全部单元测试:

打包编译发行版本:

最后,编译执行的JDK的版本一般建议跟Android Studio使用的JDK一致,完全可以使用Android Studio自带的JDK进行编译。

当前建议的版本

目前,暂时不建议在生产环境中使用Android Studio 4.2发布版本,目前测试发现Android Studio 4.2编译出的代码,在华为系列手机上存在问题,主要是崩溃问题。可能出现如下崩溃日志:

如果升级到Android Studio 4.2执行测试用例的时候,可能报告如下错误:

这个问题是由于Android Studio 4.2自带的JDK版本已经升级到了Java 11.0.8版本,跟PowerMock不兼容。

解决此问题的方式是在测试用例的忽略列表中增加:

另外,在Android Studio 4.2使用Robolectric-4.5.1以下的版本(比如Robolectric-4.3.1)执行测试用例的时候,可能报告如下错误信息:

这个问题是由于Android Studio 4.2自带的JDK版本已经升级到了Java 11.0.8版本,当Robolectric去服务器下载依赖包的时候,默认使用HTTP地址。当服务器强制要求重定向到HTTPS地址,这部分代码处理存在问题。

解决这个问题的方法就是升级到 Robolectric-4.5.1以及以上的版本即可。

参考链接


发布者