클린코드 9 - 단위 테스트

yesjm·2024년 4월 24일
0

클린코드를 읽자

목록 보기
9/13

TDD 법칙 세가지

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

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

  • 지저분한 테스트 코드는 테스트를 안하는 것보다 못하다.
  • 테스트 코드는 실제 코드 못지 않게 중요하다.
  • 테스트는 유연성, 유지보수성, 재사용성을 제공한다
  • 테스트 케이스가 없다면 모든 변경이 잠정적인 버그다.
  • 테스트 코드가 지저분하면 코드를 변경하는 능력이 떨어지며 코드 구조를 개선하는 능력도 떨어진다.

깨끗한 테스트 코드

  • 가독성
  • BUILD-OPERATE-CHECK 패턴:
    첫 부분은 테스트 자료를 만든다.
    두 번째 부분은 테스트 자료를 조작하며,
    세 번째 부분은 조작한 결과가 올바른지 확인한다.

이중 표준

  • 실제 환경에서는 절대로 안 되지만 테스트 환경에서는 전혀 문제없는 방식이 있다. 대개 메모리나 CPU 효율과 관련 있는 경우. 코드의 깨끗함과는 철저히 무관하다.

테스트당 assert 하나

  • Junit으로 테스트 코드를 짤 때는 함수마다 assert 문을 단 하나만 사용해야 한다.
    결론이 하나라서 코드를 이해하기 쉽고 빠르다.
  • 하지만 코드의 중복이 많다면 함수 하나에 여러 assert문을 넣기도 한다. 단 assert 문 개수는 최대한 줄여야 좋다.
    -> 테스트 함수마다 한 개념만 테스트하라

F.I.R.S.T

  • Fast 빠르게: 테스트는 빨라야 한다.
  • Independent 독립적으로: 각 테스트는 서로 의존하면 안된다.
  • Repeatable 반복가능하게: 테스트는 어떤 환경에서도 반복 가능해야 한다.
  • Self-Validating 자가검증하는: 테스트는 bool 값으로 결과를 내야 한다.
  • Timely 적시에: 테스트는 적시에 작성해야 한다.
profile
yesjm's second brain

0개의 댓글