정의
- Java 애플리케이션을 위한 강력하고 직관적인 단언 라이브러리
- JUnit과 함께 사용하여 테스트에서 객체의 상태나 동작을 검증할 수 있는 유창한 API를 제공
- AssertJ는 가독성이 뛰어난 코드를 작성할 수 있도록 도와주며, 다양한 유형의 단언을 지원해 코드 품질 향상에 기여
특징과 장점
1. 특징
1. 유창한 API (Fluent API)
- 메서드 체이닝을 통해 가독성이 높은 단언 구문을 작성할 수 있음
- 예) assertThat(user).hasName("John").isAdult();
2. 다양한 단언 메서드
- 객체, 컬렉션, 배열, 문자열 등 다양한 데이터 타입에 대해 단언할 수 있는 메서드를 제공
- 예) 컬렉션의 크기, 내용, 정렬 여부 등을 쉽게 검증할 수 있음
3. 커스터마이징 가능한 메시지
- 단언 실패 시 사용자 정의 메시지를 지정하여 문제를 쉽게 진단할 수 있도록 지원
4. JUnit과의 통합
- JUnit 4, 5와 함께 사용할 수 있으며, 기존의 JUnit 테스트와 쉽게 통합할 수 있음
2. 장점
| 장점 |
설명 |
| 가독성 |
AssertJ는 가독성이 높아 테스트 코드의 이해도를 높일 수 있 |
| 유연성 |
다양한 타입의 단언을 지원하여, 객체의 복잡한 속성도 쉽게 검증할 수 있음 |
| 직관적 |
API가 직관적이어서 테스트를 작성하는 데 필요한 시간을 단축 가능 |
주요 메서드
| 분 |
메서드 |
설명 |
| 객체 관련 단언 |
assertThat(object) |
주어진 객체에 대한 단언 시작 |
| isEqualTo(expected) |
객체가 예상값과 같은지 확인 |
| isNotNull() |
객체가 null이 아닌지 확인 |
| 문자열 관련 단언 |
assertThat(string) |
문자열에 대한 단언 시작 |
| contains(expectedSubs) |
문자열에 특정 부분 문자열이 포함되어 있는지 확인 |
| startsWith(prefix) |
문자열이 특정 접두사로 시작하는지 확인 |
| 컬렉션 관련 단언 |
assertThat(collection) |
컬렉션에 대한 단언 시작 |
| hasSize(expectedSize) |
컬렉션의 크기를 확인 |
| contains(expectedEle) |
특정 요소가 컬렉션에 포함되어 있는지 확인 |
예시
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
class User {
private String name;
private int age;
// 생성자, 게터, 세터 생략
}
public class UserTest {
@Test
void testUserAttributes() {
User user = new User("John", 30);
// AssertJ를 사용한 단언
assertThat(user.getName()).isEqualTo("John");
assertThat(user.getAge()).isGreaterThan(18);
}
@Test
void testUserList() {
List<User> users = List.of(new User("Alice", 25), new User("Bob", 20));
// 컬렉션에 대한 단언
assertThat(users)
.hasSize(2)
.extracting(User::getName)
.contains("Alice", "Bob")
.doesNotContain("Charlie");
}
}
비고
1. AssertJ는 JUnit의 짝!
레퍼런스
1. 구글링, 우테코 프리코스 2주차 관련 문서
2. AssertJ 공식 문서