You need to enable JavaScript to run this app. 如何在JUnit测试方法中读取配置(如Tag、pom的Surefire分组参数)
优惠活动
大模型
产品
解决方案
定价
更多

如何在JUnit测试方法中读取配置(如Tag、pom的Surefire分组参数)

JUnit测试方法内部读取配置值的实现方法

核心结论

上述两种读取需求都可以落地实现:

  • 可以直接在测试方法内部读取当前方法上标注的@Tag自定义值
  • 可以通过简单配置透传,在测试代码中读取maven-surefire-plugin配置的测试分组参数值

一、读取测试方法标注的@Tag值

JUnit5内置了测试元数据注入能力,不需要自定义扩展,直接通过TestInfo对象就能拿到当前测试方法的全量注解、标签信息。

实现步骤

  • 修正原测试方法中@Tag的写法:空括号的@Tag()没有实际作用,需要补上具体的标签值,比如@Tag("base")
  • 给测试方法添加TestInfo类型的形参,JUnit运行时会自动注入携带当前测试元数据的实例
  • 通过注入的TestInfo获取当前方法的标签集合,匹配目标值后执行对应逻辑

示例代码

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;

@Test
@Tag("base")
public void myTest(TestInfo testInfo) throws Exception {
    // 获取当前方法绑定的所有标签
    String currentTag = testInfo.getTags().stream()
                                .findFirst()
                                .orElse("");
    if (currentTag.equals("base")) {
        // 匹配base标签时的执行逻辑
    } else {
        // 非匹配分支的执行逻辑
    }
}

二、读取maven-surefire-plugin配置的groups参数值

surefire插件的groups配置值是插件内部用来做测试过滤的参数,默认不会暴露给测试运行的JVM,需要做一次配置透传才能在测试代码中读取。

实现步骤

  • 修改pom.xml中maven-surefire-plugin的配置,新增系统属性透传配置,把groups的配置值传递给测试运行环境
  • 在测试方法中通过系统属性API读取透传的分组值

配置与代码示例

pom.xml中插件配置修改:

<configuration>
    <skipTests>${skipTests}</skipTests>
    <trimStackTrace>false</trimStackTrace>
    <groups>base</groups>
    <!-- 透传分组值到测试JVM的系统属性 -->
    <systemPropertyVariables>
        <test.run.group>${groups}</test.run.group>
    </systemPropertyVariables>
</configuration>

测试方法中的读取逻辑:

@Test
public void myTest() throws Exception {
    String configuredGroup = System.getProperty("test.run.group", "");
    if (configuredGroup.equals("base")) {
        // 匹配base分组时的执行逻辑
    } else {
        // 非匹配分支的执行逻辑
    }
}

注意事项

  • 单个测试方法可以标注多个@Tag,读取到的标签是集合形式,需要根据实际业务取对应的值判断
  • 如果业务逻辑是基于当前测试自身的标签做分支判断,优先用TestInfo读取方法上的Tag值即可,不需要额外透传surefire的配置值,因为surefire本身就是靠匹配@Tag和groups参数来决定测试执行范围的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 01:54:03