【发布时间】:2020-07-14 19:37:46
【问题描述】:
我正在尝试模拟一个对象,但 android studio 不断报告无法模拟最终类。我的设置和尝试如下;
因为我的依赖;
androidTestImplementation 'org.mockito:mockito-core:3.3.3'
我的代码是这样的;
class CategoryFile {
private lateinit var categories: Categories
@Before
fun setup() {
categories = mock(Categories::class.java)
}
@Test
fun validData() {
categories.getName(0)
}
}
当我尝试运行 validData() 时,我得到了 final class cannot be mocked 异常。
我已尝试在此目录中使用mock-maker-inline 选项;
我了解到,一旦实施了程序化方式,此选项将被删除。但无法在任何地方找到任何关于如何以编程方式在线进行的参考。
我还在一些 SO 帖子中读到,你也应该将它包含在你的类路径中,但我不知道如何做到这一点。
我也尝试过使用另一个模拟库com.nhaarman.mockitokotlin2.mock,它也一直告诉我final class cannot be mocked。
我还在这些过程的多个阶段进行了多次项目重建,以防万一。
【问题讨论】:
-
您是在
androidTest还是test下编写测试? -
androidTest... 我想我应该把扩展名放到那个文件夹里?明天试试。 -
@a_local_nobody 是的,解决了它。那是我的愚蠢。如果您想发布答案,很乐意接受。
-
很高兴它有帮助,当我看到
androidTestImplementation时,您的扩展名在test下似乎有点奇怪,虽然我通常只在test下进行测试,但我写的不多仪器测试:)