Javaでのパラメータとして、静的メソッドを渡します

Jvmt:

こんにちは、私はいくつかの検証メソッドを持つクラスをテストすることだし、重複コードを削減する方法がある場合、私は思ってきました。

@Test
void testCorrectEmailValidator() {
    List<String> correctEmails = Arrays.asList("[email protected]", "[email protected]", "[email protected]",
            "[email protected]", "[email protected]", "[email protected]");

    for (String email : correctEmails) {
        boolean isValid = UserCredentialsValidator.emailValidator(email);
        System.out.println("Email is valid: " + email + ": " + isValid);
        assertTrue(isValid);
    }
}

@Test
void testCorrectUsernameValidator() {
    List<String> correctUsernames = Arrays.asList("username", "123username", "username3", "user2name",
            "USERNAME", "USERNAME123", "123USERNAME123", "2uSERname33");

    for(String username : correctUsernames) {
        boolean isValid = UserCredentialsValidator.usernameValidation(username, userList);
        System.out.println("Username is valid:    " + username + "     : " + isValid);
        assertTrue(isValid);
    }
}

渡すようにしてくださいどのように、有効な方法ではない - 文字列、リストとしての資格をテストしたが、私は最後のパラメータに問題を持っている:私は受け入れるヘルパーメソッドを実装することを考えた、ユーザ名などなど、他のフィールドのバリデータをも持っていますそれ。

私はいくつかの方法で交換したいコードは、forループです。

アンドリューTobilko:

私はあなたのテストは、低品質のもので怖いです。

固定されなければならない問題はすぐに含ま

  1. UserCredentialsValidator.usernameValidation(username, userList);この方法は、第2引数を取るべきではありません。そのリストが取得された場所から場所は、APIの消費者から隠蔽する必要があります。

  2. List<String> correctEmails = Arrays.asList(...)およびList<String> correctUsernames = Arrays.asList(...)削除する必要があります。あなたはより良いテストはしてパラメータ化させるのだ@ParameterizedTest@ValueSource

  3. 私はむしろ削除したいSystem.out.println文を。彼らはテストで少し意味をなします。


@ParameterizedTest
@ValueSource(strings = {"[email protected]", "[email protected]"})
void testUserEmailValidationWithValidUserEmailShouldPass(String validUserEmail) {
    boolean isValid = UserCredentialsValidator.emailValidator(validUserEmail);
    assertTrue(isValid);
}

@ParameterizedTest
@ValueSource(strings = {"username", "123username"})
void testUserNameValidationWithValidUserNameShouldPass(String validUserName) {
    boolean isValid = UserCredentialsValidator.usernameValidation(validUserName);
    assertTrue(isValid);
}

今減らすためには何もありません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=176120&siteId=1