솜사탕코튼 2023. 12. 12. 21:26

DisplayName을 섬세하게 작성하자

 

테스트 코드 섬세하게 달기 · beginner0107/cafekiosk@69d8e3f

beginner0107 committed Dec 12, 2023

github.com

  • 간단하게 적어준다(X)
  @DisplayName("음료 1개 추가 테스트")
  @Test
  void add() {
    CafeKiosk cafeKiosk = new CafeKiosk();
    cafeKiosk.add(new Americano());

    assertThat(cafeKiosk.getBeverages()).hasSize(1);
    assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("아메리카노");
  }

 

  • 상세하게 적어준다.(O)
  @DisplayName("음료 1개를 추가하면 주문 목록에 담긴다.")
  @Test
  void add() {
    CafeKiosk cafeKiosk = new CafeKiosk();
    cafeKiosk.add(new Americano());

    assertThat(cafeKiosk.getBeverages()).hasSize(1);
    assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("아메리카노");
  }

 

 

처음 회사에 입사했는데, 테스트코드를 살펴보니 XXX테스트 이렇게 되어 있으면 이해하기 어려울 수 있다.

 

DisplayName을 작성할 때 유의할 점

  • 음료 1개 추가 테스트 -> "~테스트" 지양하기
  • 음료를 1개 추가할 수 있다. (O)

>> 명사의 나열보다 문장으로 

  • A이면 B이다.
  • A이면 B가 아니고 C다.
더보기

어떤 상태가 주어졌을 때, 어떤 행위를 가했고, 어떤 상태 변화가 있었다라는 결과까지 명시를 해줄 수 있기 때문에 

꼭 문장 형태로 작성하는 노력이 필요하다.

 

  • 음료를 1개 추가할 수 있다.
  • 음료를 1개 추가하면 주문 목록에 담긴다. (O)

>> 테스트 행위에 대한 결과까지 기술하기

 

 

  • 특정 시간 이전에 주문을 생성하면 실패한다.
  • 영업 시작 시간 이전에는 주문을 생성할 수 없다. (O)

>> 도메인 용어를 사용하여 한층 추상화된 내용을 담기 - 메서드 자체의 관점보다는 도메인 정책 관점으로

>> 테스트의 형상을 중점으로 기술하지 말 것 - "실패한다"는 테스트와 무관