# Back-End/Spring

[Test] JUnit5를 이용한 테스트 코드 작성

JUnit5란?

  1. JVM에서 사용하는 테스트 프레임워크
  2. 테스트 개발을 위한 API 제공
  3. Spring Boot 2.2.X 버전에서는 기본적으로 제공
  4. (spring-boot-starter-test)

JUnit4, JUnit5의 차이점

  1. Spring 기본 제공 여부
  2. 구성된 모듈
  3. 사용하는 어노테이션
  4. 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

 

테스트 클래스 생성 가이드

  1. 테스트 클래스는 하나 이상의 테스트 메소드를 포함하는 최상위 클래스, static 멤버 클래스 또는 중첩 클래스 이어야 한다.
  2. 테스트 클래스는 추상 클래스로 정의되면 안되고, 단일 생성자만 가져야 한다.
  3. 테스트 메소드는 @Test 등의 어노테이션으로 정의된 메소드를 말한다.
  4. 생명주기 메소드는 @BeforeAll, @Before 등의 어노테이션으로 정의된 메소드를 말한다.
  5. 테스트 메소드와 생명주기 메소드는 모두 추상 메소드로 정의되면 안 되며, 값을 반환해서도 안된다.

 

값 확인하기(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