首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Kotlin单元测试中,为什么Android将Mockito显示为未解决的引用,尽管它已经编译和测试通过了?

在Kotlin单元测试中,为什么Android将Mockito显示为未解决的引用,尽管它已经编译和测试通过了?
EN

Stack Overflow用户
提问于 2020-04-07 18:13:30
回答 1查看 1.4K关注 0票数 1

非常奇怪的问题: Mockito deps看起来很坏,尽管它们确实有效。

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

这些错误的工具提示是“未解决的引用”。

一些细节:

  • 这些是单元测试(在app/src/test下),而不是Android工具测试。
  • 只有当测试是Kotlin时才会发生这种情况。在类似的Java测试中,Mockito deps在Android中显示得很好。
  • 重申一下,尽管是用红色显示的,但它仍然可以在上工作:测试在命令行和Android中都会编译和通过。

build.gradle中,在dependencies

代码语言:javascript
运行
复制
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所以Mockito与最终的Kotlin类一起工作。)

编辑:这不应该是相关的,但是对于Android工具测试,也有这样的情况。(我在之前更新到Mockito 2时遇到了一些问题,所以坚持使用1.10.19。)

代码语言:javascript
运行
复制
// 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 3.5.3

我试过的

  • 重新同步项目(build.gradle)
  • 在内部运行clean分级任务
  • 关闭项目并再次打开它
  • 完全退出Android并再次打开它

更新

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

当我点击红色显示的名字时,它会带我到mockito-core-1.9.5-sources.jar中的源代码;但是当我点击ArgumentMatchers或MockitoJUnitRunner时,它会带我到mockito-core-2.19.0-sources.jar,正确的。

我用app:dependencies进行了调查,唯一提到Mockito 1.9.5的是通过葡萄糖制造商-mockito。

代码语言:javascript
运行
复制
+--- com.google.dexmaker:dexmaker-mockito:1.2
|    +--- com.google.dexmaker:dexmaker:1.2
|    \--- org.mockito:mockito-core:1.9.5 -> 1.10.19 (*)

但是,由于葡萄糖依赖只适用于androidTest,它不应该影响test下的任何东西,对吗?

编辑:实际上,Android中的androidTest deps有点混乱;在androidTestImplementation中注释掉所有mockito和dexmaker删除了错误的错误高亮显示(但正如前面提到的,使用不同版本是有原因的)。

最后,Android更新修复了这个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 19:57:17

哦,这是Android中的一个bug :更新到最新版本(3.6.2)修复了它。

androidTestImplementation依赖项与testImplementation依赖项相冲突;有关详细信息,请参阅更新的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61086662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档