- 테스트 코드는 실제 코드의 유연성, 유지보수성, 재사용성을 보존하고 강화한다.
- 표현력을 높이고 간결하게 정리하라.
- 테스트 API를 구현해 도메인 특화 언어를 만들라.

과거와는 달리 애자일과 TDD로 인해 단위 테스트를 자동화할 수 있게 됐다.

  1. TDD 법칙의 세가지

    1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.

    2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.

    3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.

  2. 깨끗한 테스트 코드 유지하기

    테스트 코드가 지저분할 수록 변경하기 어려워진다.

    그렇다고 테스트 슈트를 없애면 안전성을 확인할 수 없고 결함이 생기게 된다.

    : 테스트 케이스가 있으면 변경이 쉬워진다.

    : 테스트 코드가 지전분하면 변경 능력이 떨어지고, 코드 구조를 개선하는 능력도 떨어진다.

  3. 깨끗한 테스트 코드 - “가독성”

    명료성, 단순성, 풍부한 표현력이 필요하다.

  4. 테스트당 assert 하나

  5. F.I.R.S.T

Fast 빠르게 - 테스트는 빨리 돌아야한다.
Independent 독립적으로 - 각 테스트는 서로 의존하지 않아야 한다.
Repeatable 반복 가능하게 - 어떤 환경에서도 반복 가능해야한다.
Self-Validating 자가 검증하는 - 테스트는 boolean으로 결과를 내야한다. (성공 or 실패)
Timely 적시에 - 텍스트는 적시에 작성해야한다.