相当奇怪的问题:尽管Mockito部门确实有效,但它们看起来还是坏了。
为什么会发生这种情况以及如何解决?
这些错误的工具提示为“ Unresolved reference ”。
一些细节:
app/src/test
下),不是Android工具测试。 在
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-inline
,so 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
)clean
Gradle任务更新资料
我认为这与有关,该项目中存在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/