작은 단위로 테스트 수트를 작성해놓으면, 다음과 같은 장점이 있다.
- 미리 작성한 테스트 케이스를 돌려봄으로써 기능을 추가하거나 수정할 때 발생하는 버그를 빠르게 찾을 수있다.
- 작성한 코드가 의도대로 동작하는지 쉽게 확인할 수 있다.
FIRST principle
- Fast
- 테스트는 빠르게 실행할 수 있어야 한다. 너무 느리다면 개발 속도 역시 더뎌질 것이다.
- Independency
- 각 테스트 케이스는 독립적이어야 한다.
- 일반적으로 클래스 단위로 테스트를 작성하며, 각 테스트는 클래스 내 메서드로 구현된다.
- 이 때 테스트 메서드가 어떤 순서로 수행되더라도 각 테스트 결과값은 항상 일정해야 한다. 메서드 선언 순서나 로직에 의해 다른 테스트가 영향을 받아서는 안된다.
- Repeatable
- 어떤 환경에서도 반복실행이 가능해야 한다. IDE든, 로컬 또는 서버 환경에서 실행하든 항상 같은 결과가 보장되어야 한다.
- 외부 서비스나 리소스가 연동되는 경우 환경에 제약이 생기게 되므로 단위 테스트에서는 이러한 연결을 제거해야 한다.
- Self-Validating
- 성공 또는 실패라는 검증 결과를 리턴해야 한다.
- Timely
- 테스트하려는 기능 구현을 하기 직전에 단위 테스트를 실시하는 것이 적절하다.
- 한 번에 많은 로직을 작성하지 않고, 작은 단위 테스트를 작성해나가면서 테스트와 기능을 단계적으로 쌓아나가는 것이 바람직하다.