JUnit5 - Part1

Noah·2022년 7월 19일
0

Application Test Study

목록 보기
1/6
post-thumbnail

Application Test 스터디를 진행하면서 공부한 내용을 정리하도록 하겠습니다

JUnit5는 무엇인가?

  • 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크

  • Spring Boot 버전이 올라감에 따라 기본 JUnit을 5로 설정됨

  • JUnit5부터 전부 모듈화가 진행됨

  • 구성요소 (이미지)

  • 구성요소

    JUnit Platform : 테스트를 실행해주는 런처 제공. TestEngine API 제공

    Jupiter : TestEngine API 구현체로 JUnit 5를 제공

    Vintage : JUnit4 & JUnit3를 지원하는 TestEngine 구현체

JUnit5 시작하기

  • Spring Boot 프로젝트가 2.2 버전 이상이면 기본적으로 JUnit5 사용

  • 의존성 추가 방식 사용

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

JUnit5 어노테이션

  • @Test : 테스트 메소드를 나타내는 어노테이션

    @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    @Testable
    public @interface Test {
    }
  • @BeforeAll : 해당 클래스에 위치한 모든 테스트 메서드 실행 전에 딱 한 번 실행되는 메서드

    @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface BeforeAll {
    }
  • @AfterAll : 해당 클래스에 위치한 모든 테스트 메서드 실행 후에 딱 한 번 실행되는 메서드

    @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface AfterAll {
    }
  • @BeforeEach : 해당 클래스에 위치한 모든 테스트 메서드 실행 전에 실행 되는 메서드

    @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface BeforeEach {
    }
  • @AfterEach : 해당 클래스에 위치한 모든 테스트 메서드 실행 후에 실행 되는 메서드

    @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface AfterEach {
    }
  • @Disabled : 테스트를 하고 싶지 않은 클래스나 메서드에 붙이는 어노테이션

    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @API(status = STABLE, since = "5.0")
    public @interface Disabled {
    
    	/**
    	 * The reason this annotated test class or test method is disabled.
    	 */
    	String value() default "";
    
    }

테스트에 이름 표시하기

  • @DisplayNameGeneration
    • Method와 Class 레퍼런스를 사용해서 테스트 이름을 표기하는 방법 설정
    • 기본 구현체로 ReplaceUnderscores 제공
    • 종류
      • Standard : 표준 표시 이름 생성
      • Simple : 매개변수가 없는 메소드의 후행 괄호 제거
      • ReplaceUnderscores : 밑줄을 공백으로 변경
      • IndicativeSentences : 테스트 이름과 포함하는 클래스를 연결하여 완벽한 문장 생성
  • @DisplayName
    • 어떤 테스트인지 테스트 이름을 보기 쉽게 표현할 수 있게 해줌
    • @DisplayNameGeneration 보다 우선 순위가 더 높음
profile
BackEnd 개발자가 되기 위해 공부중입니다!

0개의 댓글