Search
Duplicate
🥎

단위 테스트란?

단위 테스트란 기본적으로 개인적인 단위의 코드가 적절한지 테스트하는 것이다.
고정된 입력값을 제공했을 때, 해당 입력값에 대한 기대되는 출력값을 출력하는 것이다.
여기서 출력은 다양하다. 상태일수도 있고 반환값일수도 있고 만약 협력자를 사용한다면 협력자와의 협력 내용을 검증할 수도 있다.
후술될수록 좋지 않은 검증법이다..

장점

테스트를 자동화할 수 있다.
즉 내가 일일이 값 넣고 로그 찍어서 확인하지 않아도 된다.
더 나은 코드 설계를 가능케 해준다.
테스트하기 힘든 구조는 결합도가 높은 코드임을 의미한다.
적은 버그와 높은 가독성을 확보할 수 있게 해준다.
설계의 변경으로 인한 이점이다. 프로그램의 신뢰성이 향상되고 단위로 잘게 쪼개지므로 코드 이해가 쉬워진다.
코드 리팩토링 시 자신감을 심어준다.
조심해야할 요소이기도 하다. 단위 테스트의 리팩토링 내성이 적절히 확보되지 않았다면 되려 리팩토링을 두렵게 만드는 존재가 된다.
CI/CD의 핵심요소이다.
단위 테스트는 개발 과정에 포함되는 것이 좋다.

통합 테스트와의 관계

통합 테스트는
다양한 요소들이 테스트 계획에 맞춰 잘 동작하는 지 테스트하는 것이다.
예상한 대로 다양한 모듈들이 함께 잘 동작하는지 결정한다.
통합 과정에서 문제가 생길 수 있는 요지들을 테스트한다.
테스트 더블을 이용해서 테스트할 수 있다.
외부 의존성까지 포함해서 테스트할 수 있다.
단위 테스트 책을 읽고나서는 생각이 바뀌었다.
단위 테스트의 공통적인 정의인 1.특정 동작 단위를 검증하며 2.빠르게 수행되고 3.테스트 간 격리되어 실행된다
위 세 항목을 모두 지키면 단위 테스트, 하나라도 지키지 않으면 통합 테스트다.

단위 테스트 프레임워크

JUnit
테스트케이스 생성을 지원한다.
테스트케이스가 성공했는지 실패했는지 체크하는 부분을 자동화해준다.
테스트 설정을 위한 다양한 유틸리티를 제공한다.
ts-mockito
테스트 더블(Mock, Stub)을 생성해준다.
이를 통해 협력자에 대한 의존성을 최소화시켜준다.