如何直接用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
相关产品推荐
相关产品推荐

