Search

assertj - ThatThrownBy vs ThatCode

Tags
java
test
Created
2024/04/20 15:11
Created time
2024/04/20 06:11
category
java

개요

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