09. 단위 테스트

TDD 법칙 세가지#

  1. 실패하는 단위 테스트를 작성할 때 까진 실제 코드를 작성하지 않는다
  2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트 작성한다
  3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성

이렇게 하면 많은 테스트 케이스들이 나오지만, 이는 관리 문제를 유발하기도 함

깨끗한 테스트 코드 유지#

가독성, 가독성, 가독성!

  • 명료성, 단순성, 풍부한 표현력이 필요
  • build-opreate-check 패턴 (given-when-then 패턴)을 많이 사용
  • 도메인 특화 언어 (DSL) 을 유틸로 구현해 테스트 코드 가독성을 높일 수 있음
  • 이중 표준
    • 실제 서비스에서 쓰면 안되지만 실제로 써도 되는 코드
    • StringBuffer가 속도에 좋지만 가독성이 안좋아 TC에선 쓰임

테스트 당 개념 하나#

  • 테스트 함수 하나는 개념 하나만 테스트
  • 함수당 assert 개수는 최소로 줄이기 (하나가 제일 좋음!)

F.I.R.S.T#

  • Fast
  • Independent
    • 각 테스트는 서로 의존하면 안됨
  • Repeatable
    • 어떠한 환경에서도 반복 가능하게
  • Self-Validating
    • 테스트는 Bool 값으로 결과를 내야 함
  • Timely
    • 적시에 구현
    • 실제코드 구현 직전에 TC 구현

결론#

  • 테스트 코드가 방치되어 망가지면 실제코드도 곧 망가짐
  • 지속적으로 테스트 코드를 깨끗이 관리
  • 표현력을 높이고 간결하게
  • 필요하다면 테스트 API를 구현해 DSL을 만들기
Last updated on