NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor() in jUnit tests for Android

NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor() in jUnit tests for Android

我尝试编写测试,我想将 guava 19.0 用于项目,但是 Android Studio 构建了 guava 17.0 我在 build.gradle

中强制使用它
configurations.all {
            resolutionStrategy.force 'com.google.guava:guava:19.0'
        }

它确实有效,但如何对测试做同样的事情?因为当 运行 测试时它使用旧的番石榴 17.0

您需要分析您的依赖项是否存在冲突。您的测试分数中至少有两个依赖项依赖于 Guava 但指定了不同的版本。

您可以使用 gradle dependenciesgradle dependencyInsight 来查找您的哪些依赖项依赖于特定版本的 Guava。一旦找到罪魁祸首(取决于您不想要的版本),您就可以排除它们。

有关详细信息,请参阅 https://docs.gradle.org/current/userguide/dependency_management.html

对我有帮助

configurations {
    compile.exclude module: 'guava-jdk5'
}