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

使用JVM Test Suite插件创建带特定JUnit5标签的Gradle测试任务

问题

我正在使用新版JVM Test Suite插件创建回归测试套件(包含专属源码集与依赖),配置代码如下:

testing {
    suites {    
        regressionTest(JvmTestSuite) {
            dependencies {
                implementation project
                implementation 'org.assertj:assertj-core:3.22.0'
            }

            targets {
                all {
                    testTask.configure {
                        sourceCompatibility = '17'
                        targetCompatibility = '17'
                        useJUnitPlatform {
                            includeTags 'check'
                        }
                    }
                }
            }
        }
    }
}

该配置生成了可运行新源码集测试的regressionTest任务,目前一切正常。

现在我需要创建一个使用不同JUnit includeTags的测试任务,但未找到合适方法。我曾参考相关资料,但这些方法仅适用于复制标准test任务,无法复用正确的依赖与源码集。

请问使用JVM Test Suite插件时,如何创建带特定JUnit5标签的新测试任务?

解决方案

你可以基于已有的regressionTest测试套件,直接复制它的测试任务并修改标签配置,这样就能完全复用原套件的源码集和依赖。具体配置如下:

testing {
    suites {    
        regressionTest(JvmTestSuite) {
            dependencies {
                implementation project
                implementation 'org.assertj:assertj-core:3.22.0'
            }

            targets {
                all {
                    testTask.configure {
                        sourceCompatibility = '17'
                        targetCompatibility = '17'
                        useJUnitPlatform {
                            includeTags 'check'
                        }
                    }
                }
            }
        }
    }
}

// 基于regressionTest套件创建新的测试任务,指定不同标签
tasks.register('regressionTestSpecial', Test) {
    // 复用原套件的编译产物和类路径
    testClassesDirs = tasks.regressionTest.testClassesDirs
    classpath = tasks.regressionTest.classpath
    
    sourceCompatibility = '17'
    targetCompatibility = '17'
    
    useJUnitPlatform {
        // 替换为你需要的目标标签
        includeTags 'special-check'
    }
    
    // 保持任务分组与原测试任务一致,方便管理
    group = 'Verification'
    description = 'Runs regression tests with "special-check" tag'
}

补充说明

  • 新任务regressionTestSpecial完全复用了原套件的依赖、源码编译结果,无需重复配置
  • 仅修改JUnit平台的includeTags参数,精准实现指定标签的测试执行
  • 如果需要创建多个不同标签的任务,可以封装成方法简化配置:
def createTaggedRegressionTest(String taskName, String tag) {
    tasks.register(taskName, Test) {
        testClassesDirs = tasks.regressionTest.testClassesDirs
        classpath = tasks.regressionTest.classpath
        
        sourceCompatibility = '17'
        targetCompatibility = '17'
        
        useJUnitPlatform {
            includeTags tag
        }
        
        group = 'Verification'
        description = "Runs regression tests with \"${tag}\" tag"
    }
}

// 快速创建多个带不同标签的测试任务
createTaggedRegressionTest('regressionTestSpecial', 'special-check')
createTaggedRegressionTest('regressionTestCritical', 'critical-check')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:01:07