단위테스트의 단위는 정하기 나름이다.

중요한 것은 하나의 단위에 초점을 맞춘 테스트라는 점

⇒ 단위 테스트라는 용어를 사용할 때 의미를 명혹히 할 필요가 있다.

단위 테스트

테스트 대상 클래스를 목 오브젝트 등의 테스트 대역을 이용해 의존 오브젝트나 외부의 리소스를 사용하지 않도록 고립시켜서 테스트하는 것. ex. upgradeLevels()

통합테스트

두 개 이상의 성격이나 계층이 다른 오브젝트가 연동하도록 만들어 테스트하거나, 도는 외부의 DB나 파일, 서비스 등의 리소스가 참여하는 테스트

단위 테스트와 통합 테스트 중 어떤 방법을 쓸지 정할 때 가이드라인.

  1. 항상 단위 테스트를 먼저 고려한다.

  2. 고립된 테스트를 만든다.

    <aside> 📌

    단위 테스트는 테스트 작성도 간단하고 실행 속도도 빠르며 테스트 대상 외의 코드나 환경으로부터 테스트 결과에 영향을 받지 않기에 가장 빠른 시간에 효과적인 테스트를 작성하기에 유리하다.

    </aside>

  3. 외부 리소스를 사용해야만 가능한 테스트는 통합 테스트로 만든다.

  4. 단위 테스트로 만들기가 어려운 경우, ex. DAO

    <aside> 📌

    DB를 사용하는 테스트는 DB 에 테스트 데이터를 준비하고, DB 에 직접 확인을 하는 등의 부가적인 작업이 필요하다.

    </aside>

  5. DAO 테스트는 DB 라는 외부 리소스를 사용하기 때문에 통합 테스트로 분류된다.

  6. 여러개의 단위가 의존관계를 가지고 동작할 때를 위한 통합 테스트는 필요하다.

  7. 단위테스트를 만들기 너무 복잡한 코드는 처음부터 통합 테스트를 고려해본다.