📌 왜 알아야할 까?
- 버그를 언제 어디서 얼마나 잡을 수 있느냐의 차이
- 단위테스트 -> 객체 혼자 잘 동작하는지
- 통합테스트 -> 모두 같이 붙었을 때 문제없는지
[단위테스트란 무엇인가?]
- 단위 테스트(Unit Test)는 아주 작은 단위를 테스트 하는것을 의미한다.
- 보통 메서드 하나를 테스트하며 외부(DB, 네트워크, 카프카)등과 연결하지 않고 테스트를 실행한다.
- 외부와 연결하지 않음으로 테스트 속도는 빠르다.
- 또한 아주 작은 단위를 테스트함으로서 실패 원인을 바로 확인할 수 있다.
- "하나의 부품이 정상적으로 동작하는가"를 확인하기 위함
- SpringBoot기준으로 Service로직이 "혼자서" 정상적으로 동작하는지 확인하기 위함
[통합테스트란 무엇인가?]
- 여러 컴포넌트를 실제로 연결하여 진행하는 테스트
- DB, Redis, Kafka, API등 외부와 연결하여 실행하는것을 모두 포함한다.
- 모두 포함하는 만큼 테스트 속도는 느리다.
- "부품들을 모두 조립했을 때 전체가 정상인지" 를 확인하기 위함
[단위 테스트 예시]
1. 서비스를 생성

2. 단위테스트 코드 작성

[언제 어떤 테스트를 사용해야 할까?]
[단위 테스트를 사용하여 확인해야하는 것]
- 계산 로직
- 조건 분기
- 예외 처리
- 동시성 핵심 로직
[통합 테스트를 사용하여 확인해야 하는것]
- JPA 매핑 오류
- 트랜잭션 전파문제
- 설정 누락(@Transactional, @Async)
- DB 제약 조건
[단위테스트와 통합테스트의 장점 및 단점]
📝 단위테스트
- 장점
- 속도가 빠르다
- 문제의 원인을 바로 확인 할 수 있다
- 단점
- 실제 환경과 다를 수 있음
- 메서드 하나만 테스트를 해서 실제로 잘 되는지는 확인하기 애매함
📝 통합테스트
- 장점
- 테스트시에도 실제 동작을 보장한다
- 설정 오류, 연결 오류 등을 발견 할 수 있다.
- 단점
- 통합테스트인만큼의 느린 속도
- 실패 원인을 찾기 어려움(단위테스트에 비해)
'Java' 카테고리의 다른 글
| [Java] 오버로딩(Method Overloading) (0) | 2026.01.11 |
|---|---|
| [Java] Garbage Collector에 대해 알아보자 (0) | 2026.01.04 |
| [Java] AutoWired는 무엇이며 왜 사용하지 않는가 (0) | 2025.12.30 |
| [Java] StringBuffer (2) | 2023.03.07 |
| [JSP] 절대경로 구하는법 (0) | 2020.12.19 |