예외를 테스트하는 AssertJ 함수(assertThatCode(), assertThatExceptionOfType(), …)와는 달리, assertThatThrownBy() 함수는 단독으로 사용할 수 있으며, 코드에서 예외를 발생시키지 않으면 실패합니다.
그러나 오직 예외가 발생한 것을 테스트하는 것만으로는 이것이 예상된 것이라고 보장하는데 부족하며, 예외 타입을 또는 내용 추가로 테스트해야만 합니다.
이 규칙은 assertThatThrownBy가 예외를 추가로 테스트하지 않고 사용되었을 때 문제를 제기합니다.
규칙을 어긴 코드
assertThatThrownBy(() -> shouldThrow()); // 규칙을 어긴 코드, 이것이 정말로 예상한 예외입니까?
규칙을 준수한 코드
assertThatThrownBy(() -> shouldThrow()).isInstanceOf(IOException.class);
//or
assertThatThrownBy(() -> shouldThrow()).hasMessage("My exception");
If you like SONARKUBE, don’t forget to give me a star.