@DisplayName("올바르지 않은 RGB 색상이다.")
    @ParameterizedTest
    @ValueSource(strings = {"#1234567", "#12", "#GGGGGG", "red", "#dasdad"})
    void isInvalidRGB(String bgColor) {
        assertThat(BackgroundColorValidator.isRGB(bgColor)).isFalse();
    }

위와 같은 배경 색깔 테스트에서 "#1234567", "#12" 이 두 값이 테스트 실패, 즉 색깔로 정상적으로 변환되는 오류가 발생하였다.

검증하는 메소드는 아래와 같은데,

public class BackgroundColorValidator {
    public static boolean isRGB(String bgColor) {
        try {
            Color color = Color.decode(bgColor);
            return color.getAlpha() == 255; // RGB 색상인 경우, 알파 값은 항상 255
        } catch (NumberFormatException e) {
            // 변환 중 예외 발생 시 유효하지 않음
            return false;
        }
    }
}

당연히 #12와 같은 값이 들어오면 NumberFormatException이 발생할 줄 알았지만,

#12와 같은 단일 문자열을 처리할 때 예외를 발생시키지 않고, 그냥 0을 반환하여 검정색으로 변환된 것이다

따라서 아래와 같은 정규표현식으로 검사를 하는 로직을 추가하여 해결하였다. 👍🏻 테스트의 중요성 … 😉 ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$