가장 중요한 3요소.
가독성, 가독성, 가독성
테스트 코드는 실제 코드와는 다르지만 수평하게 생각해야한다. 아무렇게나 짜면 안된다.
제 1번 요구사항은 가독성이다
아래에서는 좀더 세분화한 다섯가지 규칙 (FIRST 규칙)을 제시한다.
1. Fast 빠른
빠르지 않은 테스트 코드는 점점 돌리기가 힘들어지고 유지보수에 문제를 만든다
2. Independant 독립적인
각 테스트가 서로 의존하고 있으면 점점 테스트코드를 분화시키기 어려워진다.
각 함수가 한가지 일만 하는 것처럼 각 테스트도 한가지 일만 해야하고 서로 독립적일수록 좋다.
3. Repeatable 반복하는
환경이 바뀌어도 반복가능해야한다. 집이든 회사든 어디서든.
4. Self-validating 자가검증하는
결과를 성공, 실패로만 내야한다. 결과를 알기 위해 로그를 읽어야하면 안된다. 주관적인 테스트가 돼 버린다.
5. Timely 적시에
테스트코드를 먼저 작성하고 그 테스트코드를 통과할만큼만 실제코드를 구현한다.
테스트 코드에 관한한 TDD(test driven development) 란 법칙이 꽤 유용하다.
아래는 세가지의 TDD 법칙이다.
1. 실패하는 단위 테스트를 작성할때까지 실제 코드를 작성하지 않는다.
2. 컴파일은 성공하면서, 실행이 실패하는 수준의 단위 테스트를 작성할 것
3. 현재 실패하는 테스트를 통과할 정도로만 실제코드를 작성한다.
클린코드를 다 보고나면 TDD도 볼 생각이다.
사실 이 챕터는 책 한권으로 소개해야 할 정도의 분량인데 굉장히 간략하게 설명해 놓은 듯 하다.