更新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单元测试无法解析被测类的主要内容,如果未能解决你的问题,请参考以下文章
将 Android Studio 3.6 和 Gradle 更新到 3.5.0 后无法运行项目
Android Gradle 插件TestOptions 配置 ④ ( org.gradle.api.tasks.testing.Test 单元测试配置类 | Android 单元测试示例 )
Android Studio:从 Github 导入项目并使用 gradle 文件重建/清理/同步后“无法解析符号 R”