공부/java

자바 - Junit5 Jupiter 를 이용한 단위 테스트 시작

샤샤샤샤 2024. 4. 3. 16:39

1. 프로젝트의 main 폴더 아래에 test 폴더를 만든다.

test 폴더 내부에 테스트 클래스를 만들지 않으면 정상적으로 junit 클래스를 import 해올수 없어 테스트 코드를 실행할수 없다.

 

 

2. @Test 어노테이션을 이용한 테스트 코드 메서드 작성

    @Test
    void test(){
     
    }

해당 어노테이션이 붙은 메서드는 main 클래스처럼 실행이 가능해진다.
main 클래스가 그렇듯, 반환값은 존재하지 않는다.

 

**** 만약 @Test 어노테이션의 import 클래스가 org.junit.jupiter.api.Test 가 아니라면 라이브러리를 추가해야 한다.
gradle의 경우 다음의 코드를 작성해줘야 한다.

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    
    # 테스트 내부적으로 필요한 Assertions 클래스 라이브러리
    testImplementation("org.assertj:assertj-core:3.25.1")

}


test {
    useJUnitPlatform()
}

 

3. assertJ 의 Assertions 를 import 해온다.

import static org.assertj.core.api.Assertions.*;

 

4. 실행 코드와 그 검증 코드를 작성한다.

    @Test
    void make24dtoTest(){
        int a = 3;
        int b = 5;
        assertThat(a+b).isEqualTo(5);
    }
}

assertThat의 괄호 내부의 값과 isEqualTo의 내부값이 같으면 테스트가 무사 통과, 다르면 테스트가 실패한다.

isEqualsTo() 매개변수 값은 assertThat 의 매개변수 값에 따라 타입이 바뀐다.

만약 특정 코드가 실행시 오류가 발생하는지, 또는 반환값이 없는 코드가 정상적으로 작동하는지 검증보고 싶을수도 있다.

그땐 assertThat 대신 오류 코드를 검증하기 위한 assertThatThrownBy() 나 정상 작동을 검증하기 위한 assertThatCode() 를 사용해야 한다.

 @Test
    void test(){
        assertThatCode(()->{
            System.out.println("aaa");
        }).doesNotThrowAnyException();
    }
    
    // 람다식 내부의 코드를 실행할때 오류가 발생하지 않으면 테스트 통과
    @Test
    void test(){
        assertThatThrownBy(()-> {
            throw  new RuntimeException();
        }).isInstanceOf(RuntimeException.class);
    }
    
    // 내부 람다에서 오류가 발생하면 그 Exception의 타입을 검증할수 있다.

 

'공부 > java' 카테고리의 다른 글

IO 와 NIO 를 이용한 입출력 (2/2)  (0) 2024.05.17
IO 와 NIO 를 이용한 입출력 (1/2)  (0) 2024.05.13
자바(java)의 생성자 함수  (0) 2023.01.23
자바(java)의 클래스 상속  (0) 2023.01.23
자바(java)의 싱글톤 패턴  (1) 2023.01.23