如何在build.gradle.kts中获取Gradle的--tests命令行参数值
Gradle 构建脚本获取 --tests 参数的实现方法
--tests 是 Gradle 测试任务的专有配置参数,不属于全局项目属性或系统属性,因此直接查找这两类属性无法获取取值,需要从 Test 任务的测试过滤配置中读取,具体实现如下:
方法1:直接在Test任务配置块中读取
在 build.gradle.kts 的 Test 任务通用配置块中直接获取参数值:
import org.gradle.api.tasks.testing.Test tasks.withType<Test> { // 获取所有通过--tests传入的测试匹配规则 val testPatterns = filter.includePatterns if (testPatterns.isNotEmpty()) { // 仅传入单个--tests参数时,取第一个元素即为目标测试用例路径 val singleTest = testPatterns.first() println("当前指定运行的测试用例:$singleTest") // 此处可添加自定义逻辑,比如调整测试日志级别、跳过前置依赖任务等 } // 保留原有Test任务配置 useJUnitPlatform() testLogging { events("PASSED", "SKIPPED", "FAILED") } }
方法2:全局存储供其他配置调用
如果需要在Test任务之外的其他逻辑中使用该参数,可以先存入扩展属性:
// 定义全局扩展变量存储测试匹配规则 var targetTestPattern: String? = null tasks.withType<Test> { val patterns = filter.includePatterns if (patterns.isNotEmpty()) { targetTestPattern = patterns.first() } } // 其他任务/配置块可直接调用该变量 tasks.register("checkSingleTest") { doLast { if (targetTestPattern != null) { println("当前为单测运行模式,目标用例:$targetTestPattern") } else { println("当前为全量测试运行模式") } } }
验证方法
执行测试命令 ./gradlew test --tests com.example.MyTest 时,脚本即可正常获取到 com.example.MyTest 的字符串值,支持通配符格式的测试规则读取。
内容的提问来源于stack exchange,提问作者Franziskus Karsunke
相关产品推荐
相关产品推荐

