클린 코드 9장 단위 테스트

inhalin·2022년 3월 9일
0

노개북 클린 코드

목록 보기
9/12

노개북 2기 16~17일차

  • 9장 단위 테스트(pp.154~169)

요약 및 느낀 점

TDD 법칙 3가지

  1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않기
  2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도의 단위 테스트 작성
  3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드 작성
  • 지저분한 테스트 코드는 테스트를 안하느니만 못하다.
  • 실제 코드가 변하면 테스트 코드도 함께 변해야 한다.

p.157
테스트 코드는 실제 코드 못지 않게 중요하다. ... 테스트 코드는 사고와 설계와 주의가 필요하다. 실제 코드 못지 않게 깨끗하게 짜야 한다.

  • 테스트 코드가 있으면 잠정적 버그에 대한 두려움이 줄어들어 변경이 쉬워진다.
  • 잘 짜여진 단위 테스트는 코드에 유연성, 유지보수성, 재사용성을 제공한다.

p.157
실제 코드를 점검하는 자동화된 단위 테스트 슈트는 설계와 아키텍처를 최대한 깨끗하게 보존하는 열쇠다.

  • 깨끗한 테스트 코드를 만들기 위해서는 가독성이 제일 중요하다.
  • 가독성을 높이기 위해서는 명료성, 단순성, 풍부한 표현력이 필요하다.
  • 테스트 API 코드는 실제 코드만큼 효율적일 필요는 없다.
  • 1번 코드보다 2번 코드가 읽기에 더 좋다.
  1. 상태 이름과 상태 값을 비교
@Test
public void turnOnLoTempAlarm throws Exception() {
	hw.setTemp(WAY_TOO_COLD);
    controller.tic();
    assertTrue(hw.headerState());
    assertTrue(hw.blowerState());
    assertFalse(hw.coolerState());
    assertFalse(hw.hiTempAlarm());
    assertTrue(hw.loTempAlarm());
}
  1. 대문자는 on, 소문자는 off를 뜻하는 문자열로 상태값 비교
// 문자열 순서  HBCHL
// {heater, blower, cooler, hi-temp-alarm, lo-temp-alarm}

@Test
public void turnOnLoTempAlarm throws Exception() {
	wayTooCold();
    assertEquals("HBchL", hw.getState());
}

@Test
public void turnOnHiTempAlarm throws Exception() {
	wayTooHot();
    assertEquals("hBCHl", hw.getState());
}
  • 테스트당 assert문은 하나만 쓰거나 최대한 줄인다.
  • 테스트당 하나의 개념만 테스트한다.

깨끗한 테스트 5가지 규칙 - FIRST

  1. Fast: 테스트는 빨리 돌아야 한다.
  2. Independent: 각 테스트는 독립적이어야 한다.
  3. Repeatable: 모든 테스트는 어떤 환경에서도 반복 가능해야 한다.
  4. Self-validating: 테스트는 bool 값으로 결과를 내야 한다.
  5. Timely: 테스트는 실제 코드를 구현하기 직전에 구현한다.

더 공부할 내용

  • 도메인에 특화된 언어(DSL)
  • 회사에서 테스트 코드 작성하기

0개의 댓글