android - 在Kotlin单元测试中,为什么Android Studio即使将Mockito编译并通过测试,却仍将Mockito显示为 Unresolved reference ?

标签 android android-studio kotlin mockito

相当奇怪的问题:尽管Mockito部门确实有效,但它们看起来还是坏了。

为什么会发生这种情况以及如何解决?

这些错误的工具提示为“ Unresolved reference ”。

一些细节:

  • 这些是单元测试(在app/src/test下),不是Android工具测试。
  • 仅当测试为 Kotlin 时才会发生。在等效的Java测试中,Mockito部门在Android Studio中的显示效果很好。
  • 重申一下,即使Mockito内容以红色显示,仍然有效:测试在命令行和Android Studio中编译并通过。

  • build.gradle中,在dependencies下:
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:2.19.0'
    
    // ... 
    
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50"
    

    (我还有一个名为org.mockito.plugins.MockMaker的文件,其中包含mock-maker-inlineso that Mockito works with final Kotlin classes。)

    编辑:这应该不相关,但是对于Android工具测试,也有这个。 (我在较早版本上更新到Mockito 2时遇到了一些问题,因此在那里坚持使用1.10.19。)
    // Here keeping older Mockito for now 
    androidTestImplementation 'org.mockito:mockito-core:1.10.19'
    // dexmaker needed for Mockito to work in androidTest
    androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
    androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
    

    使用Android Studio 3.5.3

    我尝试过的
  • 重新同步项目(build.gradle)
  • 在AS
  • 中运行clean Gradle任务
  • 关闭项目,然后再次打开
  • 完全退出Android Studio,然后再次打开

  • 更新资料

    我认为这与有关,该项目中存在Mockito 的多个版本。

    当我单击红色显示的名称时,它将带我到mockito-core-1.9.5-sources.jar中的源;但是,当我Cmd单击ArgumentMatchers或MockitoJUnitRunner时,它将带我到正确的mockito-core-2.19.0-sources.jar

    我使用app:dependencies进行了调查,对Mockito 1.9.5的唯一引用是通过dexmaker-mockito。
    +--- com.google.dexmaker:dexmaker-mockito:1.2
    |    +--- com.google.dexmaker:dexmaker:1.2
    |    \--- org.mockito:mockito-core:1.9.5 -> 1.10.19 (*)
    

    但是由于dexmaker依赖项仅适用于androidTest,因此它不应该影响test下的任何内容,对吧? 🤔

    编辑:的确,androidTest某种程度上混淆了Android Studio;注释掉androidTestImplementation中的所有Mockito和dexmaker Deps都删除了错误的错误突出显示(但是如前所述,使用不同版本是有原因的)。

    最后,Android Studio update fixed this

    最佳答案

    哦,这是Android Studio中的错误:更新至最新版本(3.6.2)修复了该错误。
    androidTestImplementation依赖项与testImplementation依赖项冲突;有关详情,请参见更新的问题。

    关于android - 在Kotlin单元测试中,为什么Android Studio即使将Mockito编译并通过测试,却仍将Mockito显示为 Unresolved reference ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61086662/

    相关文章:

    android - 加载图像的高度比实际图像大

    java - 使用 ProGuard 导出 Android 应用程序会出现 ParseException 错误

    java - PrintWriter 在 java 中打印 POS 泰米尔字符

    java - 使用Kotlin在子类中强制执行静态方法编译?

    android - 为更新的 bool 值添加流程

    java - Discord Bot 的命令处理

    android - CardView 是 wrap_content 列表项而不是 match_parent

    代码 View 中的 Android Studio 空指针警告/通知

    java - ScrollView 不滚动 2 ListView

    android - 如何使用 Gradle 和 Android Studio 从资源中排除文件?