BackEnd/JUnit

JUnit 5

hanseom 2022. 1. 30. 16:01
반응형

  Junit이란 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크입니다. Spring Boot 2.2부터 JUnit 5 Jupiter가 적용되었습니다.

 

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • JUnit Platform: 테스트를 실행해주는 런처를 제공합니다. (TestEngine API 제공)
  • JUnit Jupiter: TestEngine API 구현체로 JUnit 5를 제공합니다.
  • JUnit Vintage: JUnit4와 3를 지원하는 TestEngine 구현체입니다.

 

의존성 추가

  Spring Boot 2.2 버전 이상의 프로젝트를 생성한다면 기본적으로 JUnit 5 의존성이 추가됩니다. 스프링 부트 프로젝트를 사용하지 않을 경우 아래 의존성을 추가해줍니다.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>

 

기본 애노테이션

  • @Test: 테스트 메소드임을 나타냅니다.
  • @BeforeAll: 모든 테스트가 수행되기 전 한 번 실행됩니다.
  • @AfterAll: 모든 테스트가 수행된 이후 한 번 실행됩니다.
  • @BeforeEach: 각각의 테스트가 실행되기 전 실행됩니다.
  • @AfterEach: 각각의 테스트가 수행된 이후 실행됩니다.
  • @Disabled: 테스트 실행을 하지 않습니다.
  • @DisplayNameGeneration: 메소드와 클래스 레퍼런스를 사용해서 테스트 이름을 표기하는 방법을 설정합니다. (기본 구현체: ReplaceUnderscores 제공)
  • @DisplayName: 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 애노테이션입니다. @DisplayNameGeneration보다 우선 순위가 높습니다.
package com.java.JUnit5;

import org.junit.jupiter.api.*;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) // "_" 를 공백으로 변경합니다.
class JUnit5Tests {

	@Test
	void contextLoads() {
		System.out.println("contextLoads");
	}

	@Test
	@DisplayName("테스트 이름")
	void next_step() {
		System.out.println("next step");
	}

	@Test
	@Disabled
	void disabled() {
		System.out.println("테스트 실행을 하지 않습니다.");
	}

	@BeforeAll
	static void beforeAll() {
		System.out.println("BeforeAll");
	}

	@AfterAll
	static void afterAll() {
		System.out.println("AfterAll");
	}

	@BeforeEach
	void beforeEach() {
		System.out.println("BeforeEach");
	}

	@AfterEach
	void afterEach() {
		System.out.println("AfterEach");
	}
}

반응형