用途:把 MockK 接入 JVM 单元测试,适合 Kotlin 为主、大量使用 suspend 函数与协程的项目,或需要模拟 Kotlin object、伴生对象、顶层函数、构造函数实例的场景。若代码库已统一使用 Mockito 或遵循 AOSP/androidx 约定,则不应引入 MockK。
主要能力:原生支持挂起函数,用 coEvery/coVerify 无需 runBlocking;支持 mockkObject、mockkStatic、mockkConstructor 模拟单例、静态与构造;默认严格模式,可用 relaxed 或 relaxUnitFun 放宽;提供 verify、verifyAll、verifySequence、verifyOrder、confirmVerified 等校验,以及 slot<T>() 参数捕获。
使用方式:在 src/test/ 添加 testImplementation("io.mockk:mockk-jvm:1.14.0");在 src/androidTest/ 添加 androidTestImplementation("io.mockk:mockk-android:1.14.0") 与 androidTestImplementation("io.mockk:mockk-agent:1.14.0")。用 MockKAnnotations.init(this, relaxUnitFun = true) 或 mockk<T>() 创建模拟;挂起函数必须用 coEvery/coVerify;JUnit4 中使用 mockkObject/mockkStatic/mockkConstructor 后必须在 @After 调用 unmockkAll(),JUnit5 可用 MockKExtension 自动清理。
限制:不能模拟 inline 函数与 value class;不要用 mockkStatic 处理生产代码的时间获取,应注入 Clock;行为复杂的协作者优先用 fake;同一模块不要混用 MockK 与 Mockito。验证命令为 ./gradlew :<module>:testDebugUnitTest --tests <YourTestClass>。