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 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
Archives
- Today
- Total
기록
[단위테스트] 해피 케이스와 예외 케이스 본문
1. 해피 케이스와 예외 케이스
테스트를 작성할 때 모든 시나리오를 고려하는 것은 어렵습니다. 그래서 해피 케이스와 예외 케이스로 나누어 테스트를 세분화합니다.
- 해피 케이스(Happy Case):
- 시스템이 정상적으로 작동할 것으로 기대되는 일반적인 상황.
- 사용자가 예상대로 행동하고, 입력값이 유효하며, 모든 조건이 만족되는 경우를 테스트.
- 예: 상품 주문 시, 1개 이상의 상품을 정상적으로 추가하는 경우.
- 예외 케이스(Exception Case):
- 시스템이 예상치 못한 입력값이나 동작에 직면했을 때 발생하는 상황.
- 에러, 경고, 또는 비정상적인 상황에 대한 방어 코드를 확인.
- 예: 상품을 0개 추가하려고 시도하거나, 잘못된 시간에 주문하는 경우.
필요성:
- 해피 케이스는 시스템이 정상적으로 작동함을 보장합니다.
- 예외 케이스는 시스템의 안정성과 에러 처리를 보장합니다.
2. 테스트 시 경계값 기준 설정
경계값(Boundary Value)은 입력값의 경계나 시스템의 한계치를 나타냅니다. 예를 들어, 음료 주문 시스템에서:
- 최소 주문 수량: 1 (해피 케이스)
- 최대 주문 수량: 제한 없음
- 예외 상황: 주문 수량이 0 또는 음수
3. 코드 예제: 해피 케이스와 예외 케이스
다음은 음료 주문 시스템에서 해피 케이스와 예외 케이스를 테스트하는 코드입니다.
(1) 해피 케이스 테스트
@Test
@DisplayName("Happy Case: 정상적으로 음료를 2잔 주문한다")
void addSeveralBeverages() {
// Arrange
CafeKiosk cafeKiosk = new CafeKiosk();
Americano americano = new Americano();
// Act
cafeKiosk.add(americano, 2);
// Assert
assertThat(cafeKiosk.getBeverages()).hasSize(2); // 2잔이 담겼는지 확인
assertThat(cafeKiosk.getBeverages().get(0)).isEqualTo(americano); // 첫 번째 음료 검증
assertThat(cafeKiosk.getBeverages().get(1)).isEqualTo(americano); // 두 번째 음료 검증
}
설명:
- add 메서드가 정상적으로 2개의 음료를 추가했는지 검증합니다.
- 이는 시스템의 정상 동작을 보장하는 해피 케이스입니다.
(2) 예외 케이스 테스트: 최소값(0)
@Test
@DisplayName("Exception Case: 음료 수량을 0으로 설정 시 예외 발생")
void addZeroBeverages() {
// Arrange
CafeKiosk cafeKiosk = new CafeKiosk();
Americano americano = new Americano();
// Act & Assert
assertThatThrownBy(() -> cafeKiosk.add(americano, 0)) // 0잔 추가 시도
.isInstanceOf(IllegalArgumentException.class) // 예외 클래스 검증
.hasMessage("음료는 1잔 이상 주문하실 수 있습니다."); // 예외 메시지 검증
}
설명:
- add 메서드에서 주문 수량이 0일 때 예외를 던지는지 검증합니다.
- 최소값(경계값)에서의 예외 처리를 확인하는 예외 케이스입니다.
'교육 > 강의' 카테고리의 다른 글
[JpaTest] Layered Architecture vs Hexagonal Architecture (0) | 2025.01.26 |
---|---|
[TDD] Test Driven Development, Red-Green-Refactor (0) | 2025.01.23 |
[단위테스트] 테스트하기 어려운 영역 분리: 현재 시간 의존성 해결 (0) | 2025.01.22 |
[단위테스트] 수동 테스트 vs 자동화 테스트 : Junit5, AssertJ (0) | 2025.01.20 |
Practical Testing: 시작하면서 (0) | 2025.01.19 |
Comments