
테스트를 작성할 때 모든 시나리오를 고려하는 것은 어렵습니다. 그래서 해피 케이스와 예외 케이스로 나누어 테스트를 세분화합니다.
해피 케이스(Happy Case):
예외 케이스(Exception Case):
경계값(Boundary Value)은 입력값의 경계나 시스템의 한계치를 나타냅니다. 예를 들어, 주차 시스템에서:
다음은 주차 시스템에서 해피 케이스와 예외 케이스를 테스트하는 코드입니다.
(1) 해피 케이스 테스트
@Test
@DisplayName("Happy Case: 정상적으로 차량을 주차한다")
void parkVehicleSuccessfully() {
// Arrange
ParkingLotSystem parkingLotSystem = new ParkingLotSystem();
Vehicle vehicle = new Vehicle("XYZ-5678");
// Act
parkingLotSystem.parkVehicle(vehicle);
// Assert
assertThat(parkingLotSystem.getVehicles()).hasSize(1); // 차량 1대가 주차되었는지 확인
assertThat(parkingLotSystem.getVehicles().get(0)).isEqualTo(vehicle); // 차량 정보 검증
}
설명:
parkVehicle 메서드가 정상적으로 차량을 주차하는지 검증합니다.(2) 예외 케이스 테스트: 주차 공간 초과
@Test
@DisplayName("Exception Case: 주차장이 가득 찬 경우 예외 발생")
void parkVehicleWhenLotIsFull() {
// Arrange
ParkingLotSystem parkingLotSystem = new ParkingLotSystem(1); // 최대 1대 주차 가능
Vehicle vehicle1 = new Vehicle("ABC-1234");
Vehicle vehicle2 = new Vehicle("DEF-5678");
parkingLotSystem.parkVehicle(vehicle1); // 첫 번째 차량 주차
// Act & Assert
assertThatThrownBy(() -> parkingLotSystem.parkVehicle(vehicle2)) // 두 번째 차량 주차 시도
.isInstanceOf(IllegalStateException.class) // 예외 클래스 검증
.hasMessage("주차장이 가득 찼습니다."); // 예외 메시지 검증
}
설명:
parkVehicle 메서드에서 주차장이 가득 찼을 때 예외를 던지는지 검증합니다.📌 이 글은 TDD 강의를 학습한 내용을 바탕으로 재구성하였습니다. 문제가 되는 부분이 있다면 수정하겠습니다.