본문 바로가기
공부/java

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

by 샤샤샤샤 2024. 4. 3.

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