개요
Exception 발생 여부를 테스트 코드에서 확인하고 싶은데, 주로 사용하던 assertThatThrownBy를 사용하여 아무런 Exception이 발생하지 않음을 증명하니 테스트가 통과되지 않음
비교
assertThatThrownBy
package org.example;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class MainTest {
@Test
void test() {
assertThatThrownBy(() -> {}).doesNotThrowAnyException();
}
}
Java
복사
doesNotThrowAnyException을 위와 같이 사용할 수 있음에도, Exception을 던지지 않으면 정상적으로 동작하지 않음
assertThatCode
package org.example;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThatCode;
class MainTest {
@Test
void test() {
assertThatCode(() -> {}).doesNotThrowAnyException();
}
}
Java
복사
assertThatCode 역시 doesNotThrowAnyException을 사용할 수 있는데, 아무런 Exception을 던지지 않아도 정상 동작
결론
1.
두 메서드의 원 목적을 잘 모르니 알아는 봐야함
2.
Exception이 존재하지 않음을 확인할 때는 assertThatCode
3.
Exception이 존재하는 경우를 확인할 때는 assertThatThrownBy