@MockK 或 mockk()

问题描述

Android 单元测试使用 Mockk 时,声明依赖时使用符号有什么区别?

class Test {
    private val x: X = mockk()

    private val test = TestClass(x)
...
}

class Test {
    @MockK
    private lateinit var x: X

    @InjectMockKs
    private lateinit var test: TestClass
    
    @Before
    fun setup() {
        MockKAnnotations.init(this)
    }
...
}

解决方法

来自MockK project

没有,这两种实现没有区别,它们是等价的。

一般来说,当您需要在代码中动态声明模拟时,或者如果您需要,例如,只需要一个模拟来放松其单元功能(在这种情况下,您可以使用mockk(relaxUnitFun = true).

如果您的模拟具有相同的行为,您可以使用注释版本。