以 Sting 数组作为源的参数化 Junit 5

问题描述 投票:0回答:1

我有一种验证密码的方法。我有一个 JUnit 用于此目的。我有一个数组,其中包含所有可能的无效密码。我需要使用

@MethodSource
参数化 JUnit 方法。我想这应该是一种直接使用
String[]
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("invalidPasswords")
void When_invalidPassword_Expect_exceptionThrown(String value) {
    Assertions.assertThrows(InvalidRequest.class, () -> Password.of(value.toString()));
}

private static Stream<String> invalidPasswords() {
    return Arrays.stream(INVALID_PASSWORDS);
}

有什么想法吗?

junit5
1个回答
0
投票

你可以使用

@ParameterizedTest
@ValueSource(strings = { NON_DIGIT_PASSWORD, ... })
void When_invalidPassword_Expect_exceptionThrown(String value) {
    Assertions.assertThrows(InvalidRequest.class, () -> Password.of(value.toString()));
}

如果你确实想要一个字段,你可以使用

@FieldSource
:

static final String[] INVALID_PASSWORDS = { NON_DIGIT_PASSWORD, ... };

@ParameterizedTest
@FieldSource("INVALID_PASSWORDS")
void When_invalidPassword_Expect_exceptionThrown(String value) {
    Assertions.assertThrows(InvalidRequest.class, () -> Password.of(value.toString()));
}
© www.soinside.com 2019 - 2024. All rights reserved.