TIL.JUnit - JUnit5 사용하기

mingreen·2021년 8월 8일
0

Application Test

목록 보기
2/2
post-thumbnail

JUnit5 사용하기

먼저 의존성을 추가하지 않은 기본 Spring Boot 프로젝트를 생성한다.
(Java 11, Maven)

  • Spring Boot 2.2버전부터는 spring-boot-starter-test 아래 그림과 같이 밑에 자동으로 JUnit이 들어간다.
    (이전 포스팅에서 다루었던 junit-jupiter를 확인할 수 있다)
  • 만약, 2.2 이전 버전을 사용하거나 Spring Boot를 사용하지 않는다면, 아래 코드를 pom.xml 파일에 넣어주면된다.
<dependency> 
  <groupId>org.junit.jupiter</groupId> 	
  <artifactId>junit-jupiter-engine</artifactId>
  <version>5.5.2</version>
  <scope>test</scope>
</dependency>

Test 만들어보기

  • 테스트 파일을 임의로 하나 생성하고, JUnit에서 제공하는 기본 애노테이션을 활용하여 테스트를 작성한다.

    IntelliJ(Mac) 기준 테스트를 생성하고자 하는 java 파일에서 cmd+shift+t 단축키를 이용할 수 있다

  • 기본 애노테이션
    @Test
    - 테스트 내용을 담고 있는 함수에 붙여준다.
    - 해당 애노테이션을 가진 함수들이 여러개 있는 테스트 클래스를 실행하면 실행 순서는 임의로 지정된다.

    @BeforeAll / @AfterAll
    - 시작 / 끝에 1번만 실행이 되는 함수에 붙여준다.
    - static void로 작성해야한다.
    (private은 사용 불가하고, return 타입이 있으면 안된다는 제한이 있다)

    @BeforeEach / @AfterEach
    - 각 테스트를 실행하기 전 / 후에 매번 실행이 되는 함수에 붙여준다.

    @Disabled
    - 무시하고 넘어가야 하는 함수에 붙여준다.
    - 실무에서는 deprecated 된 함수이므로 현재 로직에 영향이 없지만, 아직 코드 정리가 완벽하게 안되었을 때 사용하는 애노테이션이다.

  • 위 6개 애노테이션에 대한 예시 코드

class StudyTest {

    @Test
    void firsttest(){
        System.out.println("create first");
    }

    @Test
    void secondtest(){
        System.out.println("create second");
    }

    @Test
    @Disabled
    void thirdtest(){
        System.out.println("create third");
    }

    @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
create first
After each
before each
create second
After each
after all

기타

  • JUnit5부터는 테스트 클래스, 메소드가 Public을 사용하지 않아도 된다. (Java의 Reflection이라는 개념 때문인데, 이 내용은 다른 포스팅에서 자세하게 다뤄볼 예정)
profile
주니어 백엔드 개발자의 기록하는 습관 만들기🧑‍💻

0개의 댓글