<aside> 💡
프로젝트를 진행하면서 illegalArgumentException을 발생 시키는 경우가 많았는데, 해당 case마다 사유가 다른 경우가 많았다. 이를 구분해 주지 않으니 테스트를 하는 경우 illegalArgumentException이 발생해도 정확이 어떤 사유로 발생했으며 로직이 제대로 시행되는지 확인하기 쉽지 않았다. 이에 따라서 오류 메시지를 추가적으로 만들어주고 Test때 이를 확인하는 방법으로 로직을 확인했다.
</aside>
로직에는 메시지를 남기고
//구분자가 두 글자 이상일 경우 가령 ",," 와 같은 것을 구분자로 받는 경우 기존의 구분자와 충돌이 발생할 수 있다고 판단하여 제한.
private void validateCustomDelimeterRequest(String input) {
if (input.indexOf("\\n") == 2)
throw new IllegalArgumentException("구분자로 사용할 문자 미입력");
if (input.indexOf("\\n") > 3)
throw new IllegalArgumentException("구분자로 사용할 문자가 두 글자 이상");
if (isInteger(Character.toString(input.charAt(2))))
throw new IllegalArgumentException("구분자로 숫자를 사용할 수 없습니다");
}
테스트를 할때는 메시지를 확인하는 테스트를 작성했다.
@Test
@DisplayName("preprocessDelimeter 예외 발생 테스트")
void preprocessDelimeter_Segment_test_o() {
String given = "//3\\n2,3,4";
IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> {
preprocessor.preprocessDelimeterSegment(given);
});
assertEquals(e.getMessage(), "구분자로 숫자를 입력했습니다");
}