更新gradle后Android单元测试无法解析被测类

Posted

技术标签:

【中文标题】更新gradle后Android单元测试无法解析被测类【英文标题】:Android unit test unable to resolve class under test after updating gradle 【发布时间】:2020-03-14 08:58:18 【问题描述】:

我将 Gradle 插件版本从 3.3.2 更新到 3.5.2,我的 Gradle 发行版从 5.3.1 更新到 5.6.4。我还使缓存无效并重新启动。在此更改之后,我的单元测试无法编译并抱怨一个类(我们称之为 Foo)无法解析。 Foo 位于“test”目录中的一个包下。例如:test/java/com/mycompany/mypackage/Foo.java

如果我在 android Studio 中打开单元测试,一切看起来都很好。 Foo 导入上没有红色下划线,我可以控制点击它就好了。只有当我尝试编译/运行它时,它才会抱怨 Foo 无法解析。

如果我将 Foo 从“test”重新定位到“main”,则单元测试编译并运行得很好。知道如何解决这个问题吗?我想让 Foo 处于测试状态,因为它仅用于测试。

【问题讨论】:

尝试文件 -> 使缓存无效/重新启动。 【参考方案1】:

您的应用包含库依赖项不包含的构建类型

android 
  buildTypes 
      release 
          ...
      
      dexOptions 
          ...
        // release & debug is in project animators
        matchingFallbacks = ['release', 'debug']
      
      debug 
          ...
      
    

设置匹配的配置回退显然是解决这个问题的正确方法。

【讨论】:

以上是关于更新gradle后Android单元测试无法解析被测类的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 无法解析未请求的版本

无法解析github库Android gradle

将 Android Studio 3.6 和 Gradle 更新到 3.5.0 后无法运行项目

Android Gradle 插件TestOptions 配置 ④ ( org.gradle.api.tasks.testing.Test 单元测试配置类 | Android 单元测试示例 )

Android Studio:从 G​​ithub 导入项目并使用 gradle 文件重建/清理/同步后“无法解析符号 R”

android 数据绑定单元测试错误无法解析数据绑定编译器选项。参数: