ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUnit 5
    Java/java study 2022. 1. 2. 00:28
    반응형
    JUnit 5 란?

     자바 개발자가 많이 사용하는 테스팅 기반 프레임워크를 말한다. Java 8 이상부터 사용가능하며 

    JUnit Platform과 JUnit  Jupiter, Junit Vintage 결합한 형태라고 보면 된다.

    • JUnit  Platform : 테스트를 발견하고 테스트 계획을 생성하는 TestEngine 인터페이스를 가지고 있다.
      Platform은 TestEngine을 통해서 테스트를 발견, 실행, 결과를 보고한다.
    • JUnit Jupiter : TestEngine의 실제 구현체는 별도 모듈이다. 모듈 중 하나가 jupiter-engine이다.
      이 모듈은 jupiter-api를 사용해서 작성한 테스트 코드를 발견하고 실행한다. Jupiter API는 JUnit 5에 새롭게 추가된 테스트 코드용 API로서, 개발자는 Jupiter API를 사용해서 테스트 코드를 작성할 수 있다.
    • JUnit Vintage : 기존에 JUnit 4 버전으로 작성한 테스트 코드를 실행할 때에는 vintage-engine 모듈을 사용한다.

     


    JUnit5의 어노테이션(Annotation)

     

    JUnit5 JUnit4 내용
    @Test   테스트 Method임을 선언함
    @ParameterizedTest   매개변수를 받는 테스트를 작성할 수 있음
    @RepeatedTest   반복되는 테스트를 작성할 수 있음.
    @TestFactory   @Test로 선언된 정적 테스트가 아닌 동적으로 테스트를 사용함.
    @TestInstance   테스트 클래스의 생명주기를 설정함.
    @TestTemplate   테스트 메소드 실행 순서를 구성하는데 사용함.
    @TestMethodOrder   공급자에 의해 여러 번 호출될 수 있도록 설계된 테스트 케이스 템플릿임을
    나타냄.
    @DisplayName   테스트 클래스 또는 메소드의 사용자 정의 이름을 선언할 때 사용함.
    @DisplayNameGeneration   이름 생성기를 선언함. 예를 들어 '_'를 공백 문자로 치환해주는 생성기가 있음. ex ) new_test -> new test
    @BeforeEach @Before 모든 테스트 실행 전에 실행할 테스트에 사용함.
    @AfterEach @After 모든 테스트 실행 후에 실행한 테스트에 사용함.
    @BeforeAll @BeforeClass 현재 클래스를 실행하기 전 제일 먼저 실행할 테스트 작성하는데,  static로
    선언함.
    @AfterAll @AfterClass 현재 클래스 종료 후 해당 테스트를 실행하는데,  static으로 선언함.
    @Nested   클래스를 정적이 아닌 중첩 테스트 클래스임을 나타냄.
    @Tag   클래스 또는 메소드 레벨에서 태그를 선언할 때 사용함.  이를 메이븐을
    사용할 경우 설정에서 테스트를 태그를 인식해 포함하거나 제외시킬 수 있음.
    @Disabled @Ignore 이 클래스나 테스트를 사용하지 않음을 표시함.
    @Timeout   테스트 실행 시간을 선언 후 초과되면 실패하도록 설정함.
    @ExtendWith   확장을 선언적으로 등록할 때 사용함.
    @RegisterExtension   필드를 통해 프로그래밍 방식으로 확장을 등록할 때 사용함.
    @TempDir   필드 주입 또는 매개변수 주입을 통해 임시 디렉토리를 제공하는데 사용함.

     

    JUnit5의 사용자 정의 Annotation

     JUnit5 jupiter의 어노테이션은 Meta Annotation으로 사용할 수 있다. 즉, Annotation의 의미를 자동으로 상속하는 고유한 Custom Annotation을 정의할 수 있다.

     

     사용자 정의 Fast Annotation

    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Tag("fast")
    public @interface Fast {
    }

     사용자가 생성한 주석 사용

    @Fast
    @Test
    void myFastTest() {
        // ...
    }

    나머지는 Spring Boot를 사용할 때 더 자세히 알아보겠다. 지금 공부해봤자 별로 의미가 없는 듯하다..

     

    반응형

    'Java > java study' 카테고리의 다른 글

    Java - 클래스(Class) 와 객체 생성  (0) 2022.01.09
    Java - LinkedList, Stack, Queue 구현하기  (0) 2022.01.02
    Java - 제어문  (0) 2022.01.01
    Java - 연산자  (0) 2021.12.19
    Java - 프리미티브 타입과 레퍼런스 타입  (0) 2021.12.10

    댓글

Designed by Tistory.