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

如何解决@MethodSource的AvoidDuplicateLiterals PMD错误(无需抑制)

解决@MethodSource触发AvoidDuplicateLiterals规则的方案

方案一:使用JUnit 5.7+的方法引用(推荐)

从JUnit 5.7版本开始,@MethodSource支持直接用方法引用替代字符串字面量,彻底避免重复写方法名字符串。

如果测试方法和数据源方法同名,可直接省略@MethodSource的参数:

@ParameterizedTest
@MethodSource
public void someTestMethod(final String endpoint) throws Exception {
    // 测试逻辑
}

private static Stream<String> someTestMethod() {
    // 返回测试数据的逻辑
}

如果数据源方法名和测试方法不同,直接通过类名引用方法:

@ParameterizedTest
@MethodSource(YourTestClass::abc)
public void someTestMethod(final String endpoint) throws Exception {
    // 测试逻辑
}

private static Stream<String> abc() {
    // 返回测试数据的逻辑
}

方案二:使用public静态常量

如果必须保留字符串参数的写法,将方法名字符串定义为public static final常量(而非private),确保注解能正确引用,同时PMD会识别这是常量引用而非重复字面量:

public static final String DATA_SOURCE_METHOD = "abc";

@ParameterizedTest
@MethodSource(DATA_SOURCE_METHOD)
public void someTestMethod(final String endpoint) throws Exception {
    // 测试逻辑
}

private static Stream<String> abc() {
    // 返回测试数据的逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:10:21