【问题标题】:mockito 3 kotlin. cannot mock final class模拟3科特林。不能模拟最后一堂课
【发布时间】: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 下进行测试,但我写的不多仪器测试:)

标签: android kotlin mockito


【解决方案1】:

因为您使用的是androidTestImplementation,所以请务必将相关文件和扩展名添加到androidTest 文件夹,而不是普通的test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多