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

sojukang·2021년 12월 16일
1

JAVA

목록 보기
1/3

예외 처리를 위해 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
기계공학과 개발어린이

0개의 댓글