상세 컨텐츠

본문 제목

[JUnit5] 모듈 구조 - Platform, Jupiter, Vintage

기록 - 프로그래밍/Java

by wjjun 2021. 8. 2. 21:43

본문

 

JUnit5 (2017년 10월 출시)

  • SpringBoot 2.2 버전부터 JUnit 기본 버전을 JUnit5 사용
  • 자바 8 이상 필요
  • 대체제 : TestNG, Spock 등

 

JUnit5

  • JUnit5 모듈화 되어 있는 구조
  • 모듈화 구조 : JUnit Platform을 기반으로 위에 JUnit 구현체 Jupiter, Vintage 모듈을 올려놓은 구조입니다.
    • 나무 뿌리 : JUnit platform, 나뭇가지 : Jupiter, Vintage
  • Java 언어로 사용할 수 있는 유닛 테스트 프레임워크

 

JUnit 모듈

1. JUnit Platform

JUnit 테스트 코드를 실행해 주는 런처(luncher) 역할을 제공하는 모듈

런처로 개발 툴, 자바 메소드에서 JUnit 5를 실행하는 것이 가능

  • JUnit5 에서는 자바 메인 메소드가 없어도 JUnit Platform 에서 테스트 코드를 실행하여 @Test 어노테이션이 선언된 테스트 코드를 실행시킬 수 있습니다.
public class App {
 
}
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.junit.jupiter.api.Test;

public class AppTest {

  @Test
  public void create() {
    AppTest app = new AppTest();
    assertNotNull(app);
  }
}

 

2. JUnit Vintage

- Junit3, 4 기반 테스트 코드를 JUnit Platform 에서 실행시키기 위한 테스트 엔진(Test Engine)을 제공하는 모듈

- JUnit Vintage는 Junit 3. 4 TestEngine 구현체 입니다.

 

3. JUnit Jupiter

- Junit 5 기반 테스트 케이스 작성을 위한 프로그래밍 모델, 확장 모델을 지원하는 모듈

- JUnit Jupiter는 Junit 5 TestEngine 구현체 입니다.

- Jupiter 기반으로 작성된 테스트 코드를 Junit Platform 에서 실행시키기 위한 테스트 엔진(Test Engine)을 제공하는 모듈

- Springboot 의존성을 추가하지 않더라도 Jupiter 의존성만 추가하시면 자바에서 JUnit5 를 이용하실 수 있습니다.

 

기본 Annotation

@Test

@BeforeAll / @AfterAll

@BeforeEach / @AfterEach

@Disabled : 선언한 테스트는 실행하지 않는다

 

기본 Annotation 공통 특징

@Test 제외

static void 로 사용해야만 합니다

return 값이 있어서는 안됩니다

public class AppTest {

  @Test
  public void create() {
    AppTest app = new AppTest();
    assertNotNull(app);
  }

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

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

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

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

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


=== 결과 출력 ===
before all

before each
after each

before each
create1
after each

after all

 

테스트 이름 짓기

@DisplayNameGeneration

@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)

@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
public class AppTest {

	@Test
	void create_1() {
	
	}
}

=== 결과 ===

IDE > RUN > Test Result > 테스트 메소드명 언더바(_) 한 칸 띄어쓰기로 변경
실행된 테스트 이름 표시 : create_1 > create 1

@DisplayName

@Test @DisplayName("테스트명")

@Test
@DisplayName("테스트명")
public void create() {

}

=== 결과 ===

실행된 테스트 이름 표시 : create_1 > 테스트명

 

'기록 - 프로그래밍 > Java' 카테고리의 다른 글

JPA 무엇인가 (사용하는 이유)  (0) 2023.12.31
JPA 패러다임 불일치 문제해결 (지연로딩)  (0) 2023.12.29
[Stream] collect method  (0) 2020.08.04
[Stream] collect method  (0) 2020.07.31
[Stream] finding operation  (0) 2020.07.30

관련글 더보기

댓글 영역