JUnit5란?
- JVM에서 사용하는 테스트 프레임워크
- 테스트 개발을 위한 API 제공
- Spring Boot 2.2.X 버전에서는 기본적으로 제공
- (spring-boot-starter-test)
JUnit4, JUnit5의 차이점
- Spring 기본 제공 여부
- 구성된 모듈
- 사용하는 어노테이션
- JUnit5는 Java 8부터 이용 가능
JUnit5 주요 어노테이션
@Test
- 테스트 메소드임을 선언
@DisplayName
- 테스트 메소드의 이름 표기
@BeforeAll
- static으로 작성하고, 테스트 class가 실행되기 전에 실행되는 곳
@BeforeEach
- 각 테스트 메소드가 실행되기전 실행
@AfterEach
- 각 테스트 메소드가 실행된 후 실행
@AfterAll
- static으로 작성하고, 테스트 class가 종료된 후 실행되는 곳
@Disabled
- 이 클래스나 테스트를 사용하지 않음을 표시
예제
@SpringBootTest
public class SampleJUnit5Test {
@BeforeAll
public static void initAll(){
System.out.println(">>>>> initAll");
}
@BeforeEach
public void init(){
System.out.println(">>>>> init");
}
@Test
@DisplayName("test1_예제용_테스트_성공")
public void test1(){
System.out.println(">>>>> test1");
}
@Test
@DisplayName("test2_예제용_테스트_성공")
public void test2(){
System.out.println(">>>>> test2");
}
@AfterAll
public static void tearDownAll(){
System.out.println(">>>>> tearDownAll");
}
@AfterEach
public void tearDown(){
System.out.println(">>>>> tearDown");
}
}
실행 순서
@BeforeAll -> SampleJUnit5Test 클래스 실행 →
@BeforeEach → @Test → @AfterEach →
@BeforeEach → @Test → @AfterEach →
SampleJUnit5Test 클래스 종료 → @AfterAll
테스트 클래스 생성 가이드
- 테스트 클래스는 하나 이상의 테스트 메소드를 포함하는 최상위 클래스, static 멤버 클래스 또는 중첩 클래스 이어야 한다.
- 테스트 클래스는 추상 클래스로 정의되면 안되고, 단일 생성자만 가져야 한다.
- 테스트 메소드는 @Test 등의 어노테이션으로 정의된 메소드를 말한다.
- 생명주기 메소드는 @BeforeAll, @Before 등의 어노테이션으로 정의된 메소드를 말한다.
- 테스트 메소드와 생명주기 메소드는 모두 추상 메소드로 정의되면 안 되며, 값을 반환해서도 안된다.
값 확인하기(Assertions)
// assertEquals(기댓값, 실제값) : 단일 값 확인
assertEquals(2, calculator.add(1, 1));
// assertAll : 여러 값 확인
assertAll(
() -> assertEquals("good", "good"),
() -> assertEquals(2, 1+1)
);
// True or False
boolean isTrue = true;
boolean isFalse = false;
assertTrue(isTrue);
assertFalse(isFalse);
728x90
'# Back-End > Spring' 카테고리의 다른 글
Filter, Interceptor, AOP (필터, 인터셉터, AOP) (0) | 2022.01.23 |
---|---|
[Test] Spring Layer별 테스트 작성 (1) | 2022.01.23 |
[Test] Spring Boot 테스트 클래스 정의 어노테이션 (0) | 2022.01.23 |
H2 console 세팅 & 접속 (0) | 2021.11.19 |
[JPA] 연관 관계를 가진 엔티티의 생성 (0) | 2021.10.14 |
[JPA] hibernate.ddl-auto 옵션 정리 (0) | 2021.10.11 |
인증과 인가란? (0) | 2021.06.21 |