예외 처리 테스트와 정상 작동 테스트

sojukang·2021년 12월 16일
1

JAVA

목록 보기
1/3
post-custom-banner

예외 처리를 위해 Exception을 throw 하도록 코드를 작성하였다면, 테스트 코드를 통해 예외 처리가 정상 작동하는지, 정상 조건에서 예외를 throw하지는 않는지 확인할 필요가 있다.
이때 assertj를 활용하면 가독성있는 테스트 코드를 작성할 수 있다.

예외 처리 테스트

공백인 문자열을 확인하는 isBlank 메소드를 다음과 같이 작성하였다고 하면

public static void isBlank(String input) {
		if (input.isEmpty()) {
			throw new IllegalArgumentException(Messages.ERROR_IS_BLANK);
		}
	}

isBlankIllegalArgumentException 예외를 throw한다. 이를 테스트하기 위해 assertj의 assertThatThrownBy를 이용할 수 있다.

  @Test
  @DisplayName("입력이 공백인 경우 테스트")
  void isBlankTest() {
      String input = "";
      assertThatThrownBy(() -> {
          ValidationUtils.isBlank(input);
      }).isInstanceOf(IllegalArgumentException.class)
          .hasMessage(Messages.ERROR_IS_BLANK);
}

isInstanceOf를 통해 throw된 에러의 인스턴스 타입을 지정할 수 있다. hasMessagehasMessageContains를 통해 에러 메시지에 관한 테스트를 추가할 수 있다.
위의 코드는 Java의 lambda식을 이용하면 다음과 같이 작성할 수 있다.

  @Test
  @DisplayName("입력이 공백인 경우 테스트")
  void isBlankTest() {
      String input = "";
      assertThatThrownBy(() -> ValidationUtils.isBlank(input))
                  .isInstanceOf(IllegalArgumentException.class)
          .hasMessage(Messages.ERROR_IS_BLANK);
  }

정상 작동 테스트

예외를 throw 하기로 작성된 메서드의 정상 작동을 확인하기 위해 예외를 throw하지 않고 실행되는 void 메서드를 테스트할 경우가 있다. 역시 assertj의 assertThatCode를 이용할 수 있다.

    assertThatCode(() -> ValidationUtils.isBlank("String"))
                .doesNotThrowAnyException();
profile
기계공학과 개발어린이
post-custom-banner

0개의 댓글