본문 바로가기

테스트

JUnit 5 기초

1) JUnit5란?

- JUnit5는 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크입니다. 

  JUnit5는 모듈화가 되어 있는데, 크게 3부분으로 구성되어 있습니다.   

  그것은 JUnit5 Platform, Jupiter, Vintage입니다.

  (1) JUnit5 Platform: 테스트를 실행해주는 런처와 TestEngine API를 제공합니다. 

  (2) Jupiter: TestEngine API의 구현체로, JUnit5를 제공합니다.  

  (3) Vintage: TestEngine API의 구현체로, JUnit4와 JUnit3를 제공합니다. 

 

- Spring은 2.2버전 이후부터 JUnit5를 기본 테스팅 프레임워크로 제공합니다.

 

2) JUnit5 기본 애너테이션

- JUnit5의 기본 애너테이션에는 다음과 같은 것들이 있습니다.

  (1)@Test

  (2)@BeforeAll, @AfterAll

  (3)@BeforeEach, @AfterEach

  (4)@Disabled   

 

(1) @Test

- @Test는 테스트 되어야 할 메소드임을 나타냅니다.

  JUnit5부터는 @Test 메소드가 public 이어야 할 필요가 없습니다. 

  그 이유는 리플렉션을 사용하기 때문입니다. 

  리플렉션이란?

  @Test
  void create(){
      Study study = new Study();
      assertNotNull(study);
      System.out.println("create");
  }

 

(2) @BeforeAll

- @BeforeAll은 모든 테스트가 실행하기 전에 딱 한 번만 호출이 됩니다. 

  @BeforeAll을 사용하는 메소드는 반드시 static으로 구현해야 합니다. 

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

 

(3) @AfterAll

- @AfterAll은 마찬가지로 모든 테스트가 실행된 후에 딱 한 번만 호출이 됩니다. 

  @AfterAll을 사용하는 메소드도 반드시 static으로 구현해야 합니다. 

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

(4) @BeforeEach

- @BeforeEach는 각각의 테스트 메소드를 실행하기 전에 한 번씩 실행됩니다.

  @BeforeEach는 반드시 static일 필요는 없습니다.

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

 

(5) @AfterEach

- @AfterEach는 각각의 테스트 메소드를 실행한 후 한 번씩 실행됩니다.

  @AfterEach는 반드시 static일 필요는 없습니다. 

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

 

(6) @Disabled

@Disabled는 작성한 테스트 메소드 중 실행하고 싶지 않은 메소드에 붙이면,

  해당 메소드가 실행되지 않습니다. 

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

 

3) JUnit5 테스트 이름 표시하기

- JUnit5 테스트의 이름을 표시하는 방법에는 2가지가 있습니다.

  그것은 @DisplayNameGeneration, @DisplayName입니다. 

 

(1) @DisplayNameGeneration

- @DisplayNameGeneration은 클래스와 메소드에 사용할 수 있습니다. 

  클래스에 사용하면 클래스에 있는 모든 메소드에 적용됩니다. 

  @DisplayNameGeneration은 '전략'에 해당하는 구현체를 입력해줄 수 있습니다. 

  대표적인 전략은 ReplaceUnderScores로, UnderScore를 빈 문자로 치환해줍니다. 

@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderScores.class)
class StudyTest{
}

(2) @DisplayName

- @DisplayName은 테스트의 이름을 명명해주는 애너테이션으로,

  @DisplayNameGeneration에 비해 권장됩니다. 

@Test
@DisplayName("스터디 만들기")
void create_new_study(){
	Study study = new Study();
    assertNotNull(study);
    System.out.println("create");
}

  

 참고

더 자바, 애플리케이션을 테스트하는 다양한 방법 

'테스트' 카테고리의 다른 글

Assertions 클래스 assertThatThrownBy  (0) 2022.09.03
Mockito 소개  (0) 2022.09.02