-
[Java Junit] AssertJ 메서드 사용법 알아보기프로그래밍 언어/JAVA 2022. 9. 27. 23:39
Spring mvc 패턴을 이용해 코드를 구현할 때 각 계층마다 테스트는 꼭 필요한 작업이다. 테스트를 위해 Junit5를 사용하는 강의를 보고있는데, 사용법에 대해 정리해볼까 싶어 포스팅을 작성한다.
📑 JUNIT이란?
자바를 위한 단위 테스트 라이브러리이며, 자바 애플리케이션에 대한 단위 테스트를 쉽게 해주는 테스트용 프레임워크라고 이해하면 된다. 단위 테스트 Unit Test는 모든 함수와 메소드에 대한 테스트 케이스 testcate를 작성하는 절차로 소스코드의 특정 모듈이 의도대로 정확히 동작하는지 검색한다. 우리가 콘솔창에 System.out.println()로 매번 동작 결과를 확인해야 하는 테스트 및 디버깅 과정을 쉽게할 수 있다.
📑 JUnit 어노테이션
📌 @Test
: 메서드 위에 해당 어노테이션을 선언해, 테스트 대상 메서드임을 지정할 수 있다.
📌 @Test(timeout = 밀리초)
: 테스트 메서드 수행 시간을 제한할 수 있다. 테스트메서드가 리턴값을 반환하는 데 걸리는 시간이 지정된 밀리초를 넘긴다면 해당 테스트는 실패로 판별한다.
📌 @Test(expected=예외)
: 해당 테스트 메서드 예외 발생 여부에 따라 성공/실패를 판별할 수 있다. expected=에 지정된 예외가 발생해야 테스트가 성공한 것으로 판별한다.
📌 @Ignore
: 해당 어노테이션이 선언된 테스트 메서드를 실행하지 않도록 지정한다.
📌 @BeforeEach
: 모든 @Test 메서드가 실행되기 전 실행되는 메서드를 지정하는 어노테이션이다. 각 테스트 시작 전에 호출되며 test 메서드에서 공통으로 사용되는 코드를 @before메서드에 선언해 사용하면 좋다. 테스트마다 공통으로 쓰이면서, 테스트 전에 리셋되어야 할 항목들이 들어간다.
📌 @AfterEach
: 모든 @Test 메서드의 실행이 끝난 뒤에 실행되는 메서드를 지정하는 어노테이션이다. 각 테스트가 끝나고 각각 호출된다.
📌 @BeforeAll
: 해당 테스트 클래스가 실행될 때 딱 한 번만 수행되는 테스트 메서드를 지정하는 어노테이션이다.
📌 @AfterAll
:해당 테스트 클래스가 실행이 끝난 뒤에 딱 한 번만 수행되는 테스트 메서드를 지정하는 어노테이션이다. 테스트클래스의 모든 테스트가 완료된 뒤 한 번 호출된다.
📑 AssertJ란?
자바 JUnit 테스트코드에 사용되어, 테스트코드의 가독성과 편의성을 높여주는 라이브러리이다. 메서드 체이닝을 지원해, 더 직관적이고 읽기 쉬운 테스트코드 작성 가능, 테스트에 필요한 풍부한 메서드들을 제공한다.
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;위의 import를 사용하면 아래와 같이 테스트가 가능하다.
Assertions.assertThat(member.getName()).isEqualTo(findMember.getName());
🔑 만약 Assertions를 사용하지 않고 assertThat으로 바로 사용하고 싶다면 static 임포트를 통해 클래스 이름 없이 사용이 가능하다.
import static org.assertj.core.apo.Assertions.*;
📑 AssertJ의 assert 메서드
AssertJ에서 모든 테스트 코드는 assertThat()으로 시작한다. 예를들어 assertThat(테스트 타겟).메서드1().메서드2() 이런 식으로 AsserJ의 여러 메서드들을 연쇄적으로 호출해 코드를 작성할 수 있다. 이 방식이 바로 메서드 체이닝!
몇가지 메서드만 적어봤다. AssertJ 사용하다 추가적으로 활용한 메서드는 더 적을 예정.
Assert 인터페이스
NumberAssert 인터페이스
반응형'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA JUnit] assertThat의 isSameAs와 isEqaulTo 비교 분석 (1) 2022.10.01 [JAVA] static import에 대하여 ( +IntelliJ에서 사용하기) (0) 2022.09.29 [ch14 람다식] 작성법 예제, 함수형 인터페이스(Functional Interface) (0) 2022.09.27 [JAVA] JVM이란? 자바 가성 머신 실행과정, 구조 알아보기 (0) 2022.09.19 [ch11 JAVA ] Comparator와 Comparable 비교, 배열 정렬하기 (0) 2022.08.05