본문 바로가기
스프링/JUnit

[JUnit] JUnit 5로 자바 단위 테스트 시작하기

by 책 읽는 개발자_테드 2021. 4. 27.
반응형

 JUnit 5로 자바 단위 테스트 시작하기

 

이 글은 인프런 - 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 학습하며 정리한 내용입니다.

www.inflearn.com/course/the-java-application-test

 

 JUnit이란?

자바 개발자가 가장 많이 사용하는 단위(Unit) 테스트 프레임워크다. 2019년 jetbrains(AndroidStudio, intellij 제작사) 설문조사에 따르면 93%의 자바 개발자가 단위 테스트를 위해 JUnit을 사용한다고 한다. JUnit은 8버전 이상의 자바를 지원한다.  

 

단위 테스트란 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다. 즉, 자바에서는 메소드에 대한 테스트 케이스를 작성하는 것을 말한다.

 

JUnit5의 구조

JUnit Platform: 테스트를 실행해주는 런처를 제공한다. 콘솔 또는 테스트코드를 통해 테스트를 실행한다. TestEngine API를 제공한다.

 

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

 

Vintage: TestEngine API 구현체로 Junit 4와 3를 제공한다.

JUnit5 시작하기

1. intellij 스프링부트 프로젝트를 생성한다.

intellij ultimate 유료 사용자는 플러그인으로 추가되어 있는 initializer로 스프링부트를 즉시 추가할 수 있다.

나와 같이 intellij comminity 무료 사용자는 분들은 다음 홈페이지에서(start.spring.io/) 아래와 같이 프로젝트를 다운로드 받은 후 intellij에 import해서 사용하도록 하자. 

 

 

 

2. 기본적으로 만들어지는 스프링부트를 위한 파일들을 삭제한다.

 

 

3. Study클래스를 생성하고, 클래스 파일 내에서 command + shift + t 를 입력해 테스트를 만든다. 스프링부트는 2.1 이후 버전 부터 기본 테스트 프레임워크로 JUnit5를 제공한다.

 

 

 

4. @Test 어노테이션을 추가한 메소드를 만들고 테스트 코드를 입력한다. JUnit5 이전 버전과 다르게 메소드에 public를 선언하지 않아도 된다.

 

 

 

5. 스프링부트 프로젝트가 아닐 경우 자동으로 JUnit5가 추가되지 않으므로, Maven(또는 Gradle) 프로젝트를 생성하고 다음과 같은Dependency를 입력해주면 된다.

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

 

JUnit5의 기본 어노테이션

@Test

어노테이션이 선언된 메소드의 테스트를 수행하게 한다.

 

@BeforAll

모든 테스트 실행 전 오직 한 번 실행한다. private 선언을 할 수 없고, 리턴값도 갖을 수 없다. 반드시 static void를 사용해야한다.

 

@AfterAll

모든 테스트 실행 후 오직 한 번 실행한다. private 선언을 할 수 없고, 리턴값도 갖을 수 없다. 반드시 static void를 사용해야한다.

 

@BeforEach

각각의 테스트를 실행할 때 실행 이전 한 번씩 호출된다.

 

@AfterEach

각각의 테스트를 실행할 때 실행 이후 한 번씩 호출된다. 

 

@Disable

해당 테스트를 실행하지 않는다.

 

package javatest;

import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;

class StudyTest {

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

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

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

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

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

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

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

}

결과

반응형

댓글