본문 바로가기
Java

[Java] 단위 테스트와 통합 테스트의 차이점과 장단점

by 세류오 2026. 1. 2.

📌 왜 알아야할 까?

- 버그를 언제 어디서 얼마나 잡을 수 있느냐의 차이

- 단위테스트 -> 객체 혼자 잘 동작하는지

- 통합테스트 -> 모두 같이 붙었을 때 문제없는지

 

[단위테스트란 무엇인가?]

- 단위 테스트(Unit Test)는 아주 작은 단위를 테스트 하는것을 의미한다.

- 보통 메서드 하나를 테스트하며 외부(DB, 네트워크, 카프카)등과 연결하지 않고 테스트를 실행한다.

- 외부와 연결하지 않음으로 테스트 속도는 빠르다.

- 또한 아주 작은 단위를 테스트함으로서 실패 원인을 바로 확인할 수 있다.

- "하나의 부품이 정상적으로 동작하는가"를 확인하기 위함 

- SpringBoot기준으로 Service로직이 "혼자서" 정상적으로 동작하는지 확인하기 위함

 

[통합테스트란 무엇인가?]

- 여러 컴포넌트를 실제로 연결하여 진행하는 테스트

- DB, Redis, Kafka, API등 외부와 연결하여 실행하는것을 모두 포함한다.

- 모두 포함하는 만큼 테스트 속도는 느리다.

- "부품들을 모두 조립했을 때 전체가 정상인지" 를 확인하기 위함


[단위 테스트 예시]

1. 서비스를 생성

 

2. 단위테스트 코드 작성


[언제 어떤 테스트를 사용해야 할까?]

[단위 테스트를 사용하여 확인해야하는 것]

- 계산 로직

- 조건 분기

- 예외 처리

- 동시성 핵심 로직

 

[통합 테스트를 사용하여 확인해야 하는것]

- JPA 매핑 오류

- 트랜잭션 전파문제

- 설정 누락(@Transactional, @Async)

- DB 제약 조건


[단위테스트와 통합테스트의 장점 및 단점]

📝 단위테스트

- 장점

  - 속도가 빠르다

  - 문제의 원인을 바로 확인 할 수 있다

- 단점

  - 실제 환경과 다를 수 있음

  - 메서드 하나만 테스트를 해서 실제로 잘 되는지는 확인하기 애매함

 

📝 통합테스트

- 장점

  - 테스트시에도 실제 동작을 보장한다

  - 설정 오류, 연결 오류 등을 발견 할 수 있다.

- 단점

  - 통합테스트인만큼의 느린 속도

  - 실패 원인을 찾기 어려움(단위테스트에 비해)