우당탕탕 좌충우돌 개발일기

테스트 케이스 - Assertions 본문

Programming/JAVA

테스트 케이스 - Assertions

성동구불주먹 2024. 1. 4. 16:25

스프링부트 프로젝트를 하면서 테스트 케이스를 작성할 때 사용하는 메서드 중의 하나인 Assertions의 두 가지 버전에 대해 설명하고자 한다.

 

 

 

 

☝️ Assertions (org.junit.jupiter.api 패키지 제공)

: 테스트 케이스를 작성할 때, JUnit과 함께 자주 사용되는 것 중 하나인 Assertion

  테스트 결과를 검증하고 예상 값과 실제 값이 일치하는지 확인하는 데 사용된다.

 

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

public class MyServiceTest {

    @Test
    public void testAddition() {
        MyService myService = new MyService();

        int result = myService.add(2, 3);

        // 예상 값과 실제 값이 일치하는지 확인
        assertEquals(5, result, "Addition result should be 5");
    }

    @Test
    public void testMultiplication() {
        MyService myService = new MyService();

        int result = myService.multiply(2, 3);

        // 예상 값과 실제 값이 일치하는지 확인
        assertEquals(6, result, "Multiplication result should be 6");
    }
}

 

해당 예제에서 사용된 ‘assertEquals()’ 메서드는

첫 번째 매개변수로 예상 값, 두 번째 매개변수로 실제 값, 세 번째 매개변수로는 실패할 경우 출력할 메시지를 받는다.

(❗세 번째 매개변수는 생략 가능)

 

 

 


 

 

 

✌️ Assertions (org.assertj.core.api 패키지 제공)

: 앞서 소개한 JUnit의 Assertions보다 더 풍부하고 가독성이 뛰어난 검증 기능을 제공한다.

 

import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;

public class MyServiceTest {

    @Test
    public void testAddition() {
        MyService myService = new MyService();

        int result = myService.add(2, 3);

        // AssertJ를 사용한 검증
        assertThat(result).isEqualTo(5);
    }

    @Test
    public void testMultiplication() {
        MyService myService = new MyService();

        int result = myService.multiply(2, 3);

        // AssertJ를 사용한 검증
        assertThat(result).isEqualTo(6);
    }
}

 

해당 예제에서는 ‘assertThat()’ 메서드를 사용하여 테스트 대상을 감싸고, ‘isEqualTo()’메서드를 사용하여 예상 값과 비교한다.

또한 AssertJ는 체이닝(Chaining)을 통해 여러 검증을 한 줄로 연결할 수 있어 가독성이 높아진다.

 

예제 메소드들

  • isEqualTo : 객체 비교에 사용
  • isGreaterThan / isLessThan : 숫자 비교에 사용

 


 

 

 

결론적으로 Assertions을 사용해 테스트를 실행했을 때,

테스트 결과를 확인할 수 있는 테스트 리포트에서 초록색(통과 ✅)또는 빨간색(실패 ❌)으로 확인할 수 있다.

이는 콘솔에 로그를 출력하는 것보다 시각적으로 더 명확하게 확인되기에 디버깅과 유지 보수에 효율적이라고 할 수 있다.

 

 

💡 TIP!

예제 코드에서 보는 것처럼 static import 하게 되면 앞에 Assertions은 생략해서 사용 가능

반응형

'Programming > JAVA' 카테고리의 다른 글

테스트 케이스 - assertThrows  (0) 2024.01.09
AfterEach 어노테이션 사용법  (2) 2024.01.04
Getter & Setter  (0) 2023.12.19
ResponseBody 어노테이션 사용법  (0) 2023.12.19
Optional 클래스  (0) 2022.08.18