본문 바로가기
카테고리 없음

[AssertJ] junit과 함께 사용되는 AssertJ 정리

by cook_code 2023. 3. 31.

테스트 대상 지정

assertThat(테스트 타겟).메소드1().메소드2().메소드3();

문자열 테스트

  • isNotEmpty() : 비어있지 않고
  • contains("문자(열)") : 해당 "문자(열)"을 포함 
  • doesNotContains("문자(열)") : 해당 "문자(열)" 미포함
  • startWith("문자(열)") : 해당 "문자(열)" 로 시작 
  • endsWith("문자") : 해당 "문자"로 끝남

여러 필드를 검사하고 싶을 경우 

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

// extracting name, age and and race.name nested property
assertThat(fellowshipOfTheRing).extracting("name", "age", "race.name")
                               .contains(tuple("Boromir", 37, "Man"),
                                         tuple("Sam", 38, "Hobbit"),
                                         tuple("Legolas", 1000, "Elf"));

tuple 사용 

doesNotThrownAnyException

 @DisplayName("메뉴 항목을 생성한다.")
    @Test
    void createTest() {
        assertThatCode(()->new MenuItem("만두", 5000))
                .doesNotThrowAnyException();
    }

에러가 발생하지 않았는지 테스트 (예외를 던지지 않는 경우 처리 방법)

assertThatCode

 @DisplayName("메뉴판에 없는 메뉴를 선택할 시 예외를 반환한다.")
    @Test
    void chooseTest2() {
        Menu menu = new Menu(List.of( new MenuItem("돈가스", 5000), new MenuItem("냉면", 7000)));
        assertThatCode(()->menu.choose("불닭"))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("잘못된 메뉴 이름입니다.");
    }

첫 번째 인자 - 기대하는 예외 클래스

두 번째 인자 - 예외가 발생하는 코드 

마지막 - 원하는 에러 메시지 출력 

isInstanceOf 안에 예상되는 예외 클래스를 넣어준다. 

hasMessage나 hasMessageContains를 통해 에러 메시지를 출력할 수 있다. 

isEqualTo

package org.example;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

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

public class CookingTest {
    @DisplayName("메뉴에 해당하는 음식을 만든다.")
    @Test
    void makeCookTest() {
        Cooking cooking = new Cooking();
        MenuItem menuItem = new MenuItem("돈가스", 5000);
        Cook cook = cooking.makeCook(menuItem);

        assertThat(cook).isEqualTo(new Cook("돈가스", 5000));
    }
}

해당 객체의 참조가 같은지 테스트 

 

참고 블로그

 

AssertJ 필수 기능 정리 (JAVA)

안녕하세요? 코딩중독입니다. JUnit가 같이 쓰기 좋은 AssertJ의 필수 기능들에 대해 소개하려고 합니다. 공식 문서는 이곳에서 참고하실 수 있으며, 틀리거나 미흡한 부분은 지적해 주시면 감사하

steady-coding.tistory.com

 

AssertJ 기본 사용법

1. AssertJ란? AssertJ란 asssertion(직역 : 주장)을 제공하는 자바 라이브러리로 에러 메세지와 테스트 코드의 가독성을 높여주는 라이브러리이다. junit5에서 제공하는 Assertions의 assert는 인자 순서 (expect

insight-bgh.tistory.com

 

반응형