본문 바로가기

BOOK Review

[클린코드] TIL - 9장 단위 테스트

🩷 TIL (Today I Learned)

  • TDD 세가지 법칙
    1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
    2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트를 작성한다
    3. 현재 실패하는 테스트를 통과할 정도로만 실제코드를 작성한다.
  • 깨끗한 테스트 코드 유지하기
    • 새 버전을 출시할 때마다 테스트케이스를 유지하고 보수하는 비용이 늘어남
    • 테스트 슈트가 없으면 코드의 작동을 확신할 수 없고 결함율이 높아짐
  • 단위 테스트
    • 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 됨
    • 도메인 특화 언어(DSL) 로 작성하기
    • BUILD-OPERATE-CHECK 패턴이 테스트 구조에 적합
      1. 테스트 자료 만들기
      2. 테스트 자료 조작
      3. 조작한 결과가 올바른지 확인
    • 테스트 당 assert 하나 -> 중복되는 코드가 많아짐 -- 저자는 추천하지는 않지만 간략하게하는걸 추천
      => TEMPLATE METHOD 패턴 사용
      a. given/when 부분을 부모 클래스에 두고 then 부분을 자식 클래스에 두기
      b. @Before 함수에 given/when 부분을 넣고 @Test 함수에 then 부분을 넣기
    • 테스트 당 개념 하나
  • F.I.R.S.T
    1. Fast 빠르게 : 테스트는 빨리 돌아야 함
    2. Independent 독립적으로 : 각 테스트는 서로 의존하면 안됨
    3. Repeatable 반복가능하게 : 어떤 환경에서도 반복 가능해야함
    4. Self-Validating : Bool 값으로 결과를 내야 함 통과여부를 알려고 로그 파일을 읽게해선 안됨(주관적이게 되므로)
    5. TImely 적시에 : 실제 코드를 구현하기 직전에 만들어야 함

🤍 오늘 읽은 범위

9장 단위테스트

❤️ 기록

회사에서 한 클래스 파일에 많은 로직들이 들어 있는 프로젝트에 새 기능을 구현한 적이 있다. TDD 를 도입하기 위해 테스트 코드를 작성하려했으나, 큰 메서드의 단위 때문에 수 많은 변수들을 mocking 해야했다. 테스트 코드를 프로젝트에 코드를 구현할 때 마다 작성하였다면, 훨씬 테스트 친화적이고 유지보수가 편리한 프로젝트가 만들어질 수 있지 않았을까