단위테스트_작성연습
단위테스트_작성연습
필기 가자
특히, AAA(Arrange-Act-Assert)와 GWT(Given-When-Then) 패턴을 통해 명확하고 일관성 있는 테스트 코드를 작성하는 방법을 학습합니다.
2.3 Arrange-Act-Assert (AAA)
- 테스트를 준비(Arrange), 실행(Act), 검증(Assert)의 3단계로 구분하여 작성하는 패턴입니다.
- 각 단계가 명확히 분리되므로, 테스트의 흐름을 쉽게 이해할 수 있습니다.
2.6 선택 기준
- AAA를 선택해야 하는 경우:
- 단순한 유틸리티 메서드나 독립적인 함수의 검증.
- 개발자가 읽기에 적합하며 테스트 흐름이 직관적일 때.
- GWT를 선택해야 하는 경우:
- 비즈니스 로직과 관련된 시나리오 테스트.
- 논리적 흐름을 자연스럽게 표현하여 이해도를 높이고자 할 때.
좋은 테스트 네이밍의 특징:
- 명확한 의도 표현:
- 테스트 대상, 입력 조건, 기대 결과를 포함하여 가독성을 높임.
- 일관성 유지:
- 프로젝트 전반에 동일한 네이밍 규칙 적용.
- 영문 표현:
- 개발자 간 협업 및 문서화를 고려해 영어로 작성.
추천 네이밍 형식:
메서드_입력조건_기대결과- 예제:
calculateTotalAmount_shouldReturnCorrectAmountprocessOrder_withInvalidStatus_shouldThrowException
ReflectionTestUtils.setField(productRequest1, “id”, 1L);
예외에 대한 테스트 코드 참고용
1
2
3
4
5
6
// When & Then
ServiceException exception = assertThrows(
ServiceException.class, () -> orderProcessService.createOrderItems(request, order)
);
assertEquals(ServiceExceptionCode.NOT_FOUND_PRODUCT.getCode(), exception.getCode());
4.3 경계 조건 테스트
경계 조건 테스트
- 경계 조건:
- 입력값의 최소값, 최대값, 경계값 등을 테스트하여 예상 동작을 검증.
- 테스트 사례:
- 요청된 수량이 제품의 재고와 정확히 일치하는 경우를 테스트.
- 주문 수량이 1 이하일 때 예외 발생 여부 확인.
2. shouldCalculateTotalPriceForZeroItems
- 대상 메소드:
calculateTotalPrice - 설명:
OrderItem리스트가 비어 있는 경우 총 가격이BigDecimal.ZERO로 반환되는지 테스트.
- 경계 조건:
OrderItem리스트 크기 = 0.
- 검증 포인트:
- 반환 값이 정확히
BigDecimal.ZERO인지 확인.
- 반환 값이 정확히
- 이런 예외는 요청부터 막아야하지 않을까 생각
Action Plan
- 회사 업무시 경계값 테스트를 진행한다.
- 프론트 누름 테스트
- Api 테스트 코드 작성시.
- 고려한다는 말도 충분한가?
- 일단 이번 과제 진행시 경계값 테스트를 추가할것.
수업 내용 필기 정리.
- 질문 : 예제에 stub 사용 예제는 없는거 같은데 맞나요?
- 기술력 없는 페이지 거르기 : 노션 페이지, 기술력 블로그 페이지 참고.
- 시스템 디자인 면접?
This post is licensed under CC BY 4.0 by the author.