단위테스트의 단위는 정하기 나름이다.
⇒ 단위 테스트라는 용어를 사용할 때 의미를 명혹히 할 필요가 있다.
테스트 대상 클래스를 목 오브젝트 등의 테스트 대역을 이용해 의존 오브젝트나 외부의 리소스를 사용하지 않도록 고립시켜서 테스트하는 것. ex. upgradeLevels()
두 개 이상의 성격이나 계층이 다른 오브젝트가 연동하도록 만들어 테스트하거나, 도는 외부의 DB나 파일, 서비스 등의 리소스가 참여하는 테스트
단위 테스트와 통합 테스트 중 어떤 방법을 쓸지 정할 때 가이드라인.
항상 단위 테스트를 먼저 고려한다.
고립된 테스트를 만든다.
<aside> 📌
단위 테스트는 테스트 작성도 간단하고 실행 속도도 빠르며 테스트 대상 외의 코드나 환경으로부터 테스트 결과에 영향을 받지 않기에 가장 빠른 시간에 효과적인 테스트를 작성하기에 유리하다.
</aside>
외부 리소스를 사용해야만 가능한 테스트는 통합 테스트로 만든다.
단위 테스트로 만들기가 어려운 경우, ex. DAO
<aside> 📌
DB를 사용하는 테스트는 DB 에 테스트 데이터를 준비하고, DB 에 직접 확인을 하는 등의 부가적인 작업이 필요하다.
</aside>
DAO 테스트는 DB 라는 외부 리소스를 사용하기 때문에 통합 테스트로 분류된다.
여러개의 단위가 의존관계를 가지고 동작할 때를 위한 통합 테스트는 필요하다.
단위테스트를 만들기 너무 복잡한 코드는 처음부터 통합 테스트를 고려해본다.