09. 단위 테스트
#
TDD 법칙 세가지- 실패하는 단위 테스트를 작성할 때 까진 실제 코드를 작성하지 않는다
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위테스트 작성한다
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성
이렇게 하면 많은 테스트 케이스들이 나오지만, 이는 관리 문제를 유발하기도 함
#
깨끗한 테스트 코드 유지가독성, 가독성, 가독성!
- 명료성, 단순성, 풍부한 표현력이 필요
- build-opreate-check 패턴 (given-when-then 패턴)을 많이 사용
- 도메인 특화 언어 (DSL) 을 유틸로 구현해 테스트 코드 가독성을 높일 수 있음
- 이중 표준
- 실제 서비스에서 쓰면 안되지만 실제로 써도 되는 코드
- StringBuffer가 속도에 좋지만 가독성이 안좋아 TC에선 쓰임
#
테스트 당 개념 하나- 테스트 함수 하나는 개념 하나만 테스트
- 함수당 assert 개수는 최소로 줄이기 (하나가 제일 좋음!)
#
F.I.R.S.T- Fast
- Independent
- 각 테스트는 서로 의존하면 안됨
- Repeatable
- 어떠한 환경에서도 반복 가능하게
- Self-Validating
- 테스트는 Bool 값으로 결과를 내야 함
- Timely
- 적시에 구현
- 실제코드 구현 직전에 TC 구현
#
결론- 테스트 코드가 방치되어 망가지면 실제코드도 곧 망가짐
- 지속적으로 테스트 코드를 깨끗이 관리
- 표현력을 높이고 간결하게
- 필요하다면 테스트 API를 구현해 DSL을 만들기