본문 바로가기
개발 환경 & 생산성 도구

VSCode Spring Boot 테스트 코드 작성법: JUnit5로 견고한 서버 만들기

by CodeByJin 2026. 2. 26.
반응형

기능 하나 고칠 때마다 "혹시 다른 게 망가지지는 않았을까?" 하고 가슴 졸이며 수동으로 모든 버튼을 눌러보시나요? 사실 이 부분이 가장 번거로우시죠? 코딩만큼이나 중요한 게 검증인데, 막상 찾아보면 단위 테스트, 통합 테스트, Mockito 같은 용어가 너무 어려운데요. 테스트 코드는 마치 '건물을 짓기 전 설계도면을 미리 시뮬레이션해 보는 것'과 같습니다. 오늘은 내 코드가 완벽하게 돌아간다는 확신을 주는 JUnit5 활용법을 아주 쉽게 풀어볼게요.

스프링 부트 테스트의 종류와 핵심 개요

테스트 코드는 크게 세분화된 기능을 검사하는 '단위 테스트'와 전체 시스템이 유기적으로 잘 맞물리는지 보는 '통합 테스트'로 나뉩니다. 개인적으로 이 구분을 명확히 하는 것이 테스트 속도와 정확도를 잡는 가장 핵심적인 지점이라고 생각합니다.

테스트 유형주요 어노테이션특징 및 장점
단위 테스트 (Unit)@ExtendWith(MockitoExtension.class)매우 빠름, 특정 메서드 로직만 집중 검증
슬라이스 테스트@WebMvcTest, @DataJpaTest필요한 레이어(Web, DB)만 로드해서 효율적임
통합 테스트 (Integration)@SpringBootTest전체 컨텍스트 로드, 실제 운영과 가장 유사함

단계별 JUnit5 테스트 코드 작성 방법

VSCode에서 테스트 코드를 짤 때는 src/test/java 경로를 활용합니다. 저도 처음엔 헷갈렸던 부분인데, 테스트 클래스의 패키지 경로가 실제 소스 코드의 패키지 경로와 일치해야 스프링이 알아서 잘 찾아냅니다.

  1. 테스트 메서드 생성: 메서드 위에 @Test를 붙입니다. JUnit5부터는 public을 생략해도 괜찮아요.
  2. Given-When-Then 패턴 적용:
    • Given: 테스트에 필요한 데이터나 상황을 준비해요.
    • When: 실제로 검증하고 싶은 메서드를 호출합니다.
    • Then: Assertions.assertEquals() 등을 사용해 결과가 예상과 맞는지 확인합니다.
  3. 가짜 객체(Mock) 활용: @Mock@InjectMocks를 사용해 보세요. 이건 저만 아는 건데, 실제 DB를 타지 않고 가짜 데이터를 반환하게 설정하면 테스트 속도가 수십 배는 빨라집니다.
  4. 테스트 실행: VSCode 왼쪽의 재생 아이콘(Testing 탭)을 누르거나 Ctrl + Shift + P를 눌러 'Java: Test Project'를 실행합니다.

이건 모르면 손해 보는 꿀팁인데, @DisplayName 어노테이션을 활용하면 테스트 결과 창에 영문 메서드 명 대신 "사용자 회원가입 성공 테스트" 같은 한글 이름을 띄울 수 있어 가독성이 엄청나게 좋아집니다.

테스트 코드가 오히려 짐이 되는 순간

테스트 코드가 많으면 무조건 좋을까요? 솔직히 말씀드리면, 잘못 짠 테스트 코드는 개발 속도를 갉아먹는 좀비가 될 수 있습니다. 단순한 Getter/Setter나 뻔한 로직에까지 테스트를 붙이면, 정작 기능 코드를 수정할 때마다 수천 개의 테스트 코드를 고쳐야 하는 부작용을 낳거든요.
 

또한, 테스트를 위해 실제 운영 DB를 그대로 연결해서 쓰는 분들이 계신데, 이 단계에서 흔히 하는 실수는 테스트 중에 실제 데이터를 삭제하거나 변형하는 것입니다. 반드시 H2 같은 인메모리 DB를 사용하거나 @Transactional을 붙여서 테스트가 끝나면 자동으로 롤백되도록 설정해야 합니다. 전문가적 통찰을 덧붙이자면, 2026년 최신 개발 환경에서는 '테스트 커버리지' 수치에 집착하기보다 '가장 고장이 잘 날 것 같은 비즈니스 로직'을 먼저 보호하는 전략이 훨씬 효율적입니다.

버그 없는 서버를 위한 팁

테스트 코드는 미래의 나에게 보내는 보험증서와 같습니다. 오늘 내가 짠 코드가 6개월 뒤에도 안전하다는 것을 보장해 주니까요. 제 생각에는 처음부터 모든 시나리오를 다 짜려고 애쓰기보다, 에러가 한 번 발생했던 부분부터 테스트를 채워나가는 방식이 가장 유리해 보여요. 버그를 고치고 그 버그가 다신 재발하지 않도록 테스트 코드로 못 박아두는 거죠.

결국 핵심은 '안심하고 퇴근할 수 있는 마음'인 것 같습니다. 테스트가 모두 초록색 체크 표시(Pass)로 변했을 때의 그 쾌감은 느껴본 사람만 알죠. 여러분의 프로젝트에는 지금 몇 개의 초록불이 켜져 있나요? 혹시 테스트 코드 짜는 게 시간 낭비라고 느껴졌던 경험이 있으신가요? 여러분은 어떤 상황에서 테스트 코드의 소중함을 느끼셨는지 궁금합니다.

VSCode Spring Boot 한글 깨짐 해결: UTF-8 인코딩 설정 완벽 정리

열심히 만든 API에서 한글이 '???'나 알 수 없는 외계어로 나올 때, 사실 이 부분이 가장 번거로우시죠? 분명히 코드는 잘 짰는데 화면이나 로그에서 한글만 뭉개지면 의욕이 꺾이기 마련입니다.

byteandbit.tistory.com

반응형