반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- IntelliJ
- 테스트자동화
- 문자열
- javascript
- vscode
- junit5
- 단위테스트
- Java
- 배열
- ArrayList
- string
- Eclipse
- js
- list
- 정규식
- 인텔리제이
- 자바
- Array
- Visual Studio Code
- math
- 자바문법
- junit
- json
- CSS
- input
- 이클립스
- html
- java테스트
- HashMap
- 자바스크립트
Archives
- Today
- Total
어제 오늘 내일
[JUnit] assertAll을 활용한 DTO/엔티티 필드 일괄 검증 본문
1. assertAll은 무엇인가?
assertAll()은 JUnit 5에서 여러 개의 검증(assert)을 한 번에 묶어 실행할 수 있도록 제공되는 메소드입니다.
DTO나 엔티티처럼 필드가 여러 개인 객체를 테스트할 때, 각각 검증 코드를 따로 작성하는 대신 묶어서 한 번에 확인할 수 있습니다.
대표적인 형태는 다음과 같습니다.
assertAll(Executable... executables);
assertAll(String heading, Executable... executables);
- heading: 검증 그룹 설명
- executables: 람다식 형태로 작성한 여러 개의 검증 코드
2. DTO 필드를 assertAll로 간단하게 일괄 검증하기
class MemberDto {
private String name;
private int age;
private String email;
public MemberDto(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
public String getName() { return name; }
public int getAge() { return age; }
public String getEmail() { return email; }
}
@Test
void dto_필드_검증() {
MemberDto dto = new MemberDto("홍길동", 30, "hong@example.com");
assertAll(
() -> assertEquals("홍길동", dto.getName()),
() -> assertEquals(30, dto.getAge()),
() -> assertEquals("hong@example.com", dto.getEmail())
);
}
설명
- 이름, 나이, 이메일 검증을 한 블록에 모아 가독성이 좋아집니다.
- 하나가 실패하더라도 나머지 검증을 모두 실행한 후 결과를 보여줍니다.
3. 엔티티 필드 + 상태 메소드 함께 검증하기
class Order {
private Long id;
private String status;
private int amount;
public Order(Long id, String status, int amount) {
this.id = id;
this.status = status;
this.amount = amount;
}
public Long getId() { return id; }
public String getStatus() { return status; }
public int getAmount() { return amount; }
public boolean isCompleted() { return "COMPLETED".equals(status); }
}
@Test
void 엔티티_검증() {
Order order = new Order(1L, "COMPLETED", 5000);
assertAll(
() -> assertEquals(1L, order.getId()),
() -> assertEquals("COMPLETED", order.getStatus()),
() -> assertEquals(5000, order.getAmount()),
() -> assertTrue(order.isCompleted())
);
}
설명
- 필드 값 검증과 상태 메소드 검증을 한 번에 처리할 수 있습니다.
4. 필수 값·기본 값 검증도 깔끔하게 처리하기
class Product {
private String name;
private int price;
private boolean onSale = false;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() { return name; }
public int getPrice() { return price; }
public boolean isOnSale() { return onSale; }
}
@Test
void 기본값_검증() {
Product p = new Product("노트북", 1000000);
assertAll(
() -> assertNotNull(p.getName()),
() -> assertTrue(p.getPrice() > 0),
() -> assertFalse(p.isOnSale())
);
}
5. assertAll 사용 시 간단 팁
- 관련된 검증을 묶어 가독성을 높일 때 가장 효과적입니다.
- 필드가 많다면 그룹을 나눠 여러 assertAll을 사용하는 방식도 좋습니다.
- 실패해야 하는 부분을 명확히 확인할 때에도 유용합니다.
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit] @DisplayName으로 테스트를 문서처럼 읽기 좋게 만드는 방법 (0) | 2026.01.08 |
|---|---|
| [JUnit] @BeforeEach, @AfterEach로 테스트 공통 준비 코드 관리하기 (0) | 2026.01.08 |
| [JUnit] fail() – 여기까지 오면 안 되는 경우 강제 실패 (0) | 2026.01.07 |
| [JUnit] assertThrows() – 예외 발생 여부 테스트 (0) | 2026.01.06 |
| [JUnit] assertNull(), assertNotNull() – null 여부 확인 (0) | 2026.01.06 |
Comments
