如何将MockKExtension.CheckUnnecessaryStub设为所有测试的默认行为?
全局设置MockKExtension.CheckUnnecessaryStub默认行为的方法
完全可以全局配置这个属性,不用在每个测试类上重复添加注解,有两种常用实现方式:
1. 通过JVM参数全局开启
直接给测试任务添加JVM启动参数,让所有MockK测试默认启用不必要Stub检查:
- 本地IDE运行测试时,在测试配置里添加参数:
-Dmockk.checkUnnecessaryStubs=true - Gradle项目可在构建脚本中统一配置:
Groovy版本(build.gradle):
Kotlin DSL版本(build.gradle.kts):test { jvmArgs '-Dmockk.checkUnnecessaryStubs=true' }tasks.test { jvmArgs("-Dmockk.checkUnnecessaryStubs=true") }
2. 自定义全局MockK配置类
通过实现MockK的扩展接口定义全局默认配置:
- 编写配置类,指定默认检查行为:
import io.mockk.MockKConfigurationExtension import io.mockk.MockKSettings class GlobalMockKConfig : MockKConfigurationExtension { override fun getConfiguration(): MockKSettings { return MockKSettings().copy( checkUnnecessaryStubs = true ) } }
- 创建配置文件让MockK识别全局配置:
在src/test/resources/META-INF/services/目录下新建文件io.mockk.MockKConfigurationExtension,内容为你的配置类全限定名,示例:
com.yourproject.test.GlobalMockKConfig
如果个别测试需要临时关闭该检查,直接在对应测试类上添加@MockKExtension.CheckUnnecessaryStub(false)注解即可,会覆盖全局配置。
内容的提问来源于stack exchange,提问作者rsobies
相关产品推荐
相关产品推荐

