Post

단위테스트_작성연습

단위테스트_작성연습

필기 가자

특히, AAA(Arrange-Act-Assert)와 GWT(Given-When-Then) 패턴을 통해 명확하고 일관성 있는 테스트 코드를 작성하는 방법을 학습합니다.

2.3 Arrange-Act-Assert (AAA)

  • 테스트를 준비(Arrange), 실행(Act), 검증(Assert)의 3단계로 구분하여 작성하는 패턴입니다.
  • 각 단계가 명확히 분리되므로, 테스트의 흐름을 쉽게 이해할 수 있습니다.

2.6 선택 기준

  1. AAA를 선택해야 하는 경우:
    • 단순한 유틸리티 메서드나 독립적인 함수의 검증.
    • 개발자가 읽기에 적합하며 테스트 흐름이 직관적일 때.
  2. GWT를 선택해야 하는 경우:
    • 비즈니스 로직과 관련된 시나리오 테스트.
    • 논리적 흐름을 자연스럽게 표현하여 이해도를 높이고자 할 때.
  • 솔직히 말장난 같음 gwt로 가면 될듯.

    3.2 테스트 케이스 네이밍 규칙

좋은 테스트 네이밍의 특징:

  1. 명확한 의도 표현:
    • 테스트 대상, 입력 조건, 기대 결과를 포함하여 가독성을 높임.
  2. 일관성 유지:
    • 프로젝트 전반에 동일한 네이밍 규칙 적용.
  3. 영문 표현:
    • 개발자 간 협업 및 문서화를 고려해 영어로 작성.

추천 네이밍 형식:

  • 메서드_입력조건_기대결과
  • 예제:
    • calculateTotalAmount_shouldReturnCorrectAmount
    • processOrder_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.