assertThat 관련 메서드 (org.assertj.core.api.Assertions.assertThat)

  • junit5 에서는 org.junit.Assert.assertThat 이 존재하지 않기 때문에 다른 라이브러리를 사용해야 한다
  • AssertJ, Hamcrest 등에 assertThat이 있지만 AssertJ를 추천한다
    (Matcher를 외울 필요 없기 때문이다)

  • assertThat 메서드 (커스터마이징)
assert 메서드 설명
assertThat(a).~~~ 객체 a가 뒤에 설정한 검증조건 만족하는지 확인

검증조건 종류

(1) 문자열

검증조건 설명
isEqualTo(value) value와 같은 값인지 확인
isEmpty() 비어있는지 확인
isNull() Null 인지 확인
isNotNull() Null이 아닌지 확인
startsWith(value) value로 시작하는지 확인
endsWith(value) value로 끝나는지 확인
contains(value) value가 포함되는지 확인

(2) 숫자

검증조건 설명
isPositive() 양수인지 확인
isBetween(start, end) start <= x <= end 인지 확인
isGreaterThan(number) number보다 큰 지 확인
isLessThan(number) number보다 작은 지 확인
isZero() 0 인지 확인

(3) 날짜

검증조건 설명
isBefore(date) 해당 날짜가 < date 인지
isAfter(date) 해당 날짜가 > date 인지
isBeforeOrEqualTo(date) 해당 날짜가 <= date 인지
isAfterOrEqualTo(date) 해당 날짜가 >= date 인지

(4) 불리언

검증조건 설명
isTrue() true 인지 확인
isFalse() false 인지 확인

(5) Collection

● Satisfy - Consumer(매개변수 O, 리턴값 X) : 람다식마다 Assertion 실행가능

검증조건 설명
AllSatisfy(Consumer) 람다식이 모두 맞는지 확인
anySatisfy(Consumer) 람다식이 맞는게 있는지 확인
noneSatisfy(Consumer) 람다식이 맞지 않는지 확인

● Match - Predicate(매개변수 O, 리턴값 Boolean) : 람다식의 리턴 Boolean에 Assertion 실행

검증조건 설명
AllMatch(Predicate) 람다식이 모두 맞는지 확인
anyMatch(Predicate) 람다식이 맞는게 있는지 확인
noneMatch(Predicate) 람다식이 맞지 않는지 확인
// 리스트에 운영타입이 있는지 확인
assertThat(typeList).anySatisfy(type -> {
    assertThat(type.getName()).isEqualTo("운영");
});

assertThat(typeList).anyMatch(type -> type.getName().equals("운영"));     

● Filter

검증조건 설명
filterdOn(람다식 or 조건) collection 객체에 필터 적용

람다식 : assertThat(userList).filteredOn(user -> user.getName().equals("e"))
조건 : assertThat(userList).filteredOn("name", "e")

List<User> userList = new ArrayList<User>();
User e = new User(1, "europani");
User a = new User(2, "alipa");
User c = new User(3, "cephi");

userList.add(e, a, c);

assertThat(userList).filteredOn(user -> user.getName().contains("e"))
    .contains(e, c);

→ userList에서 이름에 ‘e’가 포함된 User객체를 필터한 후 그 리스트에 객체 e, c가 포함되어 있는지 확인

검증조건 설명
first() 컬렉션의 첫번째 원소 가져오기
last() 컬렉션의 마지막 원소 가져오기
element(index) 컬렉션의 지정한 인덱스 원소 가져오기

● Extract

검증조건 설명
extracting(속성) 특정 속성만 추출 가능
assertThat(userList).extracting("name").contains("e")

(6) 테스트 실패 메시지

  • as(description, args..)를 통해 테스트 실패시 출력될 메시지를 정할 수 있다
  • as는 반드시 검증조건 앞에서 작성해야 한다
@Test
void test() throws Exception {
    String str = "name";
    assertThat(str).as("값을 확인해주세요. 현재값 : %s", str).isEqualTo("name2");
}

AssertJ공식문헌