SPRING

[Java] Junit 5

boudle 2024. 7. 6. 21:06

Junit을 소개하기에 앞서 단위 테스트를 먼저 소개하겠습니다.

 

단위 테스트(Unit Test)란?

단위테스트란 특정 소스코드의 모듈이 의도한 대로 잘 작동하는지 검증하는 테스트입니다.
즉, 함수 및 메소드에 대한 테스트를 하는 작업으로써, Spring에서 단위테스트는 Spring Container에 올라와 있는 Bean 을 테스트 하는 것입니다

 

 

  • 1. Junit5 이란??
  • 자바 개발자가 가장 많이 사용하는 테스팅 기반 프레임워크다.
  • 기본 Junit 4에 비해 JUnit 5는 3가지 모듈로 구성됩니다.
  • 자바 8 이상을 필요로 합니다.

 

2. Juint 구조 

JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

출처 : https://xxeol.tistory.com/14

 

  • JUnit Platform  : 테스팅 프레임워크를 구동하기 위한 launcher와 테스트 엔진을 위한 API를 제공한다.
  • JUnit Jupiter : JUnit 5를 위한 테스트 API 실행 엔진을 제공한다.
  • JUnit Vintage : JUnit 3과 4로 작성된 테스트를 JUnit 5 Platform에서 실행하기 위한 모듈을 제공한다.

3.애노테이션(Annotations)

  • @Test - 테스트 메서드임을 나타낸다.
  • @ParameterizedTest - 파라미터화 된 테스트
  • @RepeatedTest - 반복 테스트를 위한 테스트 템플릿임을 나타낸다.
  • @TestFactory - 다이나믹 테스트를 위한 테스트 팩토리임을 나타낸다.
  • @TestTemplate - 테스트 케이스에 대한 템플릿임을 나타낸다.
  • @TestMethodOrder - 테스트 클래스의 테스트 메서드 실행 순서를 설정하는데 사용한다.
  • @TestInstance - 테스트 클래스의 테스트 인스턴스 라이프사이클을 설정하는데 사용한다.
  • @DisplayName - 테스트 클래스 또는 테스트 메서드에 대한 표시 이름을 지정한다.
  • @DisplayNameGeneration 테스트 클래스에서 사용할 표시 이름 생성기를 지정한다.
  • @BeforeEach 현재 클래스의 각 테스트 메서드를 실행하기 전에 실행되어야 하는 메서드임을 나타낸다.
  • @AfterEach 현재 클래스의 각 테스트 메서드를 실행한 후에 실행되어야 하는 메서드임을 나타낸다.
  • @BeforeAll 현재 클래스의 모든 테스트 메서드를 실행하기 전에 실행되어야 하는 메서드임을 나타낸다
  • @AfterAll 현재 클래스의 모든 테스트 메서드를 실행한 후에 실행되어야 하는 메서드임을 나타낸다.
  • @Nested 해당 클래스가 non-static 내부 테스트 클래스임을 나타낸다.
    내부 테스트 클래스에서는 @BeforeAll @AfterAll 메서드를 직접적으로 사용할 수 없다.
  • @Tag 필터링 테스트를 위한 태그를 선언하는데 사용한다.
  • @Disabled 해당 테스트 클래스 또는 테스트 메서드를 비활성화 하는데 사용한다.
  • @Timeout 테스트, 테스트 팩토리, 테스트 템플릿 또는 라이프사이클 메서드가 주어진 실행 시간을 초과하면 실패시키기 위해 사용한다.
  • @ExtendWith Extension을 선언적으로 등록하는데 사용한다.
  • @RegisterExtension 프로그래밍적으로 Extension을 등록하는데 사용한다.
  • @TempDir 라이프사이클 메서드 또는 테스트 메서드에서 필드 또는 파라미터 주입을 통해 임시 디렉토리를 제공하는데 사용한다.