테스트 대상 지정
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
반응형
'백엔드' 카테고리의 다른 글
[이것이 자바다] chapter.13 확인 문제 (0) | 2023.04.03 |
---|---|
[이것이 자바다] chapter.12 확인 문제 (0) | 2023.03.31 |
[JAVA 개념 정리] 객체지향(OOP)이란? (0) | 2023.03.30 |
[TDD] @ParameterizedTest 사용하기 (0) | 2023.03.29 |
[TDD] 테스트 코드 작성의 필요성과 작성 방법 (2) | 2023.03.28 |