CHAPTER 11 단위 테스트의 실제

좋은코드 나쁜코드: 프로그래머의 코드 품질 개선법(PART III 단위 테스트)

CHAPTER 11 단위 테스트의 실제

좋은 단위 테스트의 특징

  • 코드의 문제를 정확하게 감지한다
  • 구현 세부 정보에 구애받지 않는다
  • 실패는 잘 설명된다
  • 테스트 코드가 이해하기 쉽다
  • 테스트를 쉽고 빠르게 실행할 수 있다

11.1 기능뿐만 아니라 동작을 시험하라

  • 함수당 하나의 테스트 케이스만 있으면 적절하지 않을 때가 많다
  • 해결책
    • 각 동작을 테스트하는 데 집중하라
      • 모든 동작이 테스트되었는지 거듭 확인하라
      • 오류 시나리오를 잊지 말라

11.2 테스트만을 위해 퍼블릭으로 만들지 말라

  • 프라이빗 함수를 테스트하는 것은 바람직하지 않을 때가 많다
    • 해결책
      • 퍼블릭 API를 통해 테스트하라
      • 코드를 더 작은 단위로 분할하라

11.3 한 번에 하나의 동작만 테스트하라

  • 여러 동작을 한꺼번에 테스트하면 테스트가 제대로 안 될 수 있다
    • 해결책
      • 각 동작은 자체 테스트 케이스에서 테스트 하라
      • 매개변수를 사용한 테스트

11.4 공유 설정을 적절하게 사용하라

상태 공유 : 설정 코드가 beforeAll 블록에 추가 되면 모든 테스트 케이스 전에 한번 실행된다
설정 공유 : 설정 코드가 beforeEach 블록에 추가 되면 각 테스트 케이스가 실행전에 실행된다

  • 상태 공유는 문제가 될 수 있다
  • 해결책
    • 상태를 공유하지 않거나 초기화하라
  • 설정 공유는 문제가 될 수 있다
  • 해결책
    • 중요한 설정은 테스트 케이스 내에서 정의하라
  • 설정 공유가 적절한 경우

11.5 적절한 어서션 확인자를 사용하라

  • 부적합한 확인자는 테스트 실패를 잘 설명하지 못할 수 있다
  • 해결책
    • 적절한 확인자를 사용하라

11.6 테스트 용이성을 위해 의존성 주입을 사용하라

  • 하드 코딩된 의존성은 테스트를 불가능하게 할 수 있다
  • 해결책
    • 의존성 주입을 사용하라

11.7 테스트에 대한 몇 가지 결론

  • 통합테스트
  • 종단 간 테스트
  • 회귀 테스트
  • 골든 테스트(특성화 테스트)
  • 퍼즈 테스트

참조