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

如何直接用String数组作为JUnit 5 @MethodSource的参数源?

JUnit参数化测试直接使用静态数组作为参数源

你可以直接通过@MethodSource引用静态数组字段的名称来实现,无需额外的转换方法。具体修改步骤如下:

  • 将@MethodSource的参数从方法名"invalidPasswords"改为静态数组的名称"INVALID_PASSWORDS"
  • 删除多余的invalidPasswords()转换方法

修改后的完整代码:

private static final String[] INVALID_PASSWORDS = { NON_DIGIT_PASSWORD, NON_SPECIAL_CHARACTER_PASSWORD,
        NON_LOWER_CASE_PASSWORD, NON_UPPER_CASE_PASSWORD, SHORTER_THAN_8_PASSWORD, WITH_WHITESPACES_PASSWORD };

@ParameterizedTest
@MethodSource("INVALID_PASSWORDS")
void When_invalidPassword_Expect_exceptionThrown(String value) {
    Assertions.assertThrows(InvalidRequest.class, () -> Password.of(value.toString()));
}

原理说明

JUnit 5的@MethodSource注解不仅支持引用返回Stream的静态方法,还可以直接引用静态的数组、Iterable、Iterator类型字段,框架会自动将其转换为参数化测试所需的数据源。

内容的提问来源于stack exchange,提问作者energize-cactus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:14:51