Assertj 는기존 JUnit에서 제공하던 Assertions 테스트 클래스를 조금 더 가독성 있게 지원하는 자바 라이브러리이다.
테스트에 필요한 대부분의 메서드를 제공한다.
또한 메서드 체이닝을 지원하기 때문에, 가독성이 높다.
아래와 같이 의존성을 추가할 수 있지만, springboot-starter-test 를 implemetation 했다면 내장되어 있다.
testImplementation 'org.assertj:assertj-core:3.22.0'
가장 기본적인 테스트로 동등성 검증이 있다.
String test = "test";
assertThat(test).isEqualTo("test");
아래와 같이 메서드 체이닝이 가능하다.
String moreTest = "assertj assertions test";
assertThat(moreTest)
.isNotEmpty()
.contains("test")
.doesNotContain("junit")
.startsWith("assertj")
.endsWith("t");
리스트 내에서 특정 필드만 검증
List<Person> myList = List.of(new Person("aaa", 22),
new Person("kkk", 23),
new Person("bbb", 25),
new Person("ddd", 36),
new Person("zzz", 67));
assertThat(myList).extracting("name").contains("aaa");
@Getter
@AllArgsConstructor
static class Person {
String name;
Integer age;
}
예외 발생에 대한 검증도 가능
assertThatThrownBy(() -> {
throw new RuntimeException("Exception!!");
})
.isInstanceOf(RuntimeException.class)
.hasMessageContaining("!!");
JUnit의 Assertions 라이브러리의 assertAll 메서드와 조합도 가능하다.
assertAll(
() -> assertThat(test).isEqualTo("test"),
() -> assertThat(moreTest).contains("test"),
() -> assertThat(myList).extracting("age").contains(23)
);
훨씬 더 많고 다양한 기능들이 있지만, 주로 사용하는 메서드 위주로 기록했다.
'개발 > Spring' 카테고리의 다른 글
[Spring] Bcrypt의 Salt 처리 방식 (1) | 2023.12.03 |
---|---|
[Spring] 비동기 처리에 대한 이해(1) - 쓰레드 (1) | 2023.10.03 |
[Spring] Elasticsearch를 Spring에 적용해보자(2) (0) | 2023.08.20 |
[Spring] Kotlin + Spring 프로젝트 만들고 테스트 해보기 (0) | 2023.08.05 |
[Spring] @RequestParam / @ModelAttribute / @RequestBody / @Requestpart (0) | 2023.07.22 |