@MicronautTest注解搭配DescribeSpec时测试被跳过问题咨询
常见根因与对应修复
自定义源码集依赖未对齐
当前所有测试相关依赖仅配置在test源码集作用域下,这类依赖不会自动传递给自定义的smokeTest源码集。依赖缺失会导致Micronaut测试扩展无法正常识别测试类,触发默认跳过逻辑。
需将对应依赖的作用域扩展到smokeTest源码集:kaptSmokeTest("io.micronaut:micronaut-inject-java") smokeTestImplementation("io.kotest:kotest-runner-junit5-jvm:4.3.0") smokeTestImplementation("io.micronaut.test:micronaut-test-kotest:2.3.3") smokeTestImplementation("io.mockk:mockk:1.10.5")KAPT注解处理范围未覆盖自定义源码集
目前仅为test源码集配置了Micronaut的Java注入注解处理,smokeTest源码集下的类没有经过KAPT生成Micronaut扫描元数据,会导致@MicronautTest注解的处理器无法匹配到测试类的元信息,直接判定类不满足运行条件被跳过。Test任务配置校验
虽然全局配置了useJUnitPlatform(),需通过dry-run命令确认smokeTest任务确实被全局配置命中:./gradlew smokeTest --dry-run若任务仍使用默认JUnit4运行器,会导致Kotest的JUnit5引擎类无法被识别,触发测试跳过。
环境变量规则校验
若测试类关联了依赖MICRONAUT_ENVIRONMENTS的@Requires规则,执行命令时未显式设置对应环境变量值,会直接触发规则匹配失败跳过测试。可在执行命令时显式指定环境变量值验证:MICRONAUT_ENVIRONMENTS=smoke ./gradlew smokeTest --info若指定变量后测试可正常运行,说明此前是环境变量未设置触发的跳过逻辑。
版本兼容性校验
需确认micronaut-test-kotest版本与Kotest核心版本的匹配关系,若扩展类加载失败,所有带@MicronautTest注解的类会被直接跳过。可开启构建输出的WARN级别日志,排查是否存在扩展加载失败的报错提示。
注意:当前测试代码内的断言1 shouldBe 3为必然失败的用例,测试修复跳过问题后,该断言会触发用例失败,可在联调通过后修正为实际业务断言。
内容的提问来源于stack exchange,提问作者Steven Staley

