【问题标题】:How mock Companion object in Android using Mockito如何使用 Mockito 在 Android 中模拟 Companion 对象
【发布时间】:2021-02-16 03:57:40
【问题描述】:

我一直在尝试运行联合测试,但现在在模拟应用程序上下文时遇到了一些问题。我试过 mockStatic() 但不工作。我正在使用 Junit 5 和 org.mockito:mockito-inline:3.4.6 进行测试。

class ApplicationContext : Application() {

    init {
       instance = this
    }

    companion object {
        private var instance : ApplicationContext? = null
        fun applicationContext() : Context = instance!!.applicationContext
    }

当我运行测试时,这会引发 NullPointerException。

java.lang.NullPointerException
    at com.adaptavant.yoco.Util.ApplicationContext$Companion.applicationContext(ApplicationContext.kt:14)
    at com.adaptavant.yoco.viewModel.LoginViewModelTest.setUp(LoginViewModelTest.kt:48)
    

谁能帮帮我。

【问题讨论】:

    标签: android unit-testing kotlin mockito junit5


    【解决方案1】:

    单元测试中没有可用的ApplicationContext - 您需要为此使用仪器测试:

    • 本地单元测试:

    当您的测试没有 Android 框架依赖项或您可以模拟 Android 框架依赖项时,使用这些测试可以最大限度地缩短执行时间。

    • 仪器测试

    这些测试可以访问 Instrumentation API,让您可以访问您正在测试的应用的上下文等信息,并让您可以通过测试代码控制被测应用。

    Source

    【讨论】:

    • 其实在添加android测试库后通过ApplicationProvider.getApplicationContext()有一个单元测试的上下文
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多