【问题标题】:Android: Unresolved reference when using junit 4.13Android:使用 junit 4.13 时未解决的参考
【发布时间】:2020-01-05 08:21:21
【问题描述】:

在gradle依赖中将junit版本更新为4.13后,在我的代码中使用时,junit包下的Assert@Test等类和注解显示为红色。皮棉检查说:

Unresolved reference: <any junit class>

但是,当我构建并运行我的测试时,它会构建并运行得很好。

我试过了:

  • 重新启动 Android Studio
  • 使缓存无效并重新启动
  • 清理并重建项目
  • 已添加testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

有效的方法是将 junit 降级到 4.12。如何在不降级版本的情况下摆脱这个 lint 错误?

更新:

  • 当我检查 ALT + ENTER 选项并选择 Inspection 'Unresolved reference, in wrong test scope' options > Suppress 'IncorrectScope' for file &lt;name of file&gt; 时,它会消除该特定文件的这些 lint 错误。不过,我仍然喜欢在不使用 Suppress 的情况下解决这个问题。
  • 根据这个issue,看起来这个错误还没有修复。现在我正在降级到 4.12。
  • 从依赖项中删除 espresso 和 runner 也可以解决问题。

【问题讨论】:

标签: android gradle junit


【解决方案1】:

只需将以下内容添加到您的 build.gradle (App) 文件中:

configurations.all {
    resolutionStrategy.force "junit:junit:$junit_version"
}

dependencies {
...
}

【讨论】:

    【解决方案2】:

    首先检查你的external dependencies 就我而言,我发现了双 jUnit 版本,即

    Junit 4.12
    Junit 4.13
    

    旧版本附带androidx.test 解决办法是

    1. exclude dependencies 
    

    2. remove `androidx.test`
    

    3. add conflict startegy
    

    【讨论】:

    • 我尝试删除我认为使用 junit 4.12 的 robolectric。然后清理并重建项目并使缓存/重新启动无效。它不能解决问题。从依赖项中删除 espresso 和 runner 实际上可以解决它。
    • 我在疑似依赖项上使用了exclude group: 'junit' module: 'junit,但没有奏效。我也找不到任何关于如何删除androidx.test 的参考资料。也许您可以对此进行详细说明或显示您的代码。
    • 你有没有试过 {exclude group: 'androidx.test'}
    【解决方案3】:

    借鉴@VaheGharibyan关于重复junit版本的想法,我发现下面的代码也解决了这个问题。

    configurations.all {
            resolutionStrategy.dependencySubstitution {
                substitute module('junit:junit:4.12') with module('junit:junit:4.13')
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 1970-01-01
      • 2021-11-02
      • 2023-01-17
      • 2019-10-11
      • 2021-11-05
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      相关资源
      最近更新 更多