You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle中Kotest未上报PASSED测试问题咨询

问题描述

我在build.gradle.kts中配置了如下内容:

tasks.withType<Test>().configureEach {
    testLogging {
        events = setOf(PASSED, SKIPPED, FAILED)
    }
}

我的Kotest测试示例如下:

class MyTests : StringSpec({

    "should fail" {
        1 shouldBe 2
    }

    "should skip".config(enabled = false) {}

    "should pass" {
        1 shouldBe 1
    }
})

执行./gradlew test --info时,仅能看到前两个测试分别被标记为FAILED和SKIPPED,本应显示为PASSED的第三个测试却完全没有被上报。请问是我的配置有误,还是该功能缺失?

解决方案

这并非配置错误,而是Kotest与Gradle默认测试日志集成的特性差异。Gradle的testLogging依赖测试框架主动发送事件,但Kotest默认不会在--info级别下向Gradle上报通过的测试事件。

你可以通过以下几种方式解决:

  • 提升Gradle日志级别至--debug
    执行命令时使用更高日志级别,即可捕获Kotest发送的通过测试事件:

    ./gradlew test --debug
    
  • 配置Kotest主动输出通过测试
    可以通过两种方式配置:

    1. 在build.gradle.kts中添加系统属性:
      tasks.withType<Test>().configureEach {
          useKotest()
          testLogging {
              events = setOf(PASSED, SKIPPED, FAILED)
          }
          systemProperty("kotest.log.passed", "true")
      }
      
    2. 在src/test/resources/kotest.properties文件中添加:
      kotest.log.passed=true
      

    配置后,Kotest会主动输出通过的测试信息,Gradle在--info级别下就能显示。

  • 升级Kotest版本
    确保使用Kotest 5.x及以上版本,旧版本存在与Gradle测试事件集成的兼容性问题,升级后可修复部分此类问题。

内容的提问来源于stack exchange,提问作者dominikbrandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:45:30