SPRING

[Spring] 스프링 테스트 코드

도원좀비 2025. 4. 10. 20:54

1️⃣ 테스트 코드란?

테스트 코드는 내가 작성한 기능이 정상적으로 동작하는지 자동으로 검증하는 코드

  • 우리가 main() 메서드 돌리면서 직접 테스트하던 것을, 코드로 남겨두는 것
  • 개발 중, 리팩토링 중, 배포 전까지 신뢰할 수 있는 안전장치

2️⃣ 테스트 코드를 작성하는 이유

  • 변경이 두렵지 않다 – 리팩토링해도 실패 시 즉시 확인 가능
  • 문서 역할 – 코드만 봐도 어떤 기능인지 테스트 이름으로 설명됨
  • 협업과 유지보수 – 다른 사람이 기능을 확신할 수 있음
  • CI/CD 자동화 – 코드 푸시할 때마다 자동 검증 가능

테스트 코드는 개발자의 자신감과 안정성을 지켜주는 도구


3️⃣ 테스트 코드의 종류

테스트 유형 설명
단위 테스트 (Unit Test) 한 클래스, 메서드 단위 테스트. 빠르고 작음
통합 테스트 (Integration Test) 여러 레이어가 실제로 연결된 테스트
E2E 테스트 실제 사용자 흐름을 시뮬레이션 (프론트-백-DB 등)

 

 

4️⃣ 어떻게 작성하는가?

단위 테스트 + Mockito 기반 Service 테스트

@SpringBootTest
@ExtendWith(MockitoExtension.class)
class PostServiceTest {

    @InjectMocks
    private PostService postService;

    @Mock
    private PostRepository postRepository;

    @Test
    void 게시글_저장_성공() {
        // given
        Post post = new Post("제목", "내용");
        when(postRepository.save(any())).thenReturn(post);

        // when
        Post saved = postService.createPost("제목", "내용");

        // then
        assertEquals("제목", saved.getTitle());
    }
}

 

 


5️⃣ 주요 어노테이션 설명

어노테이션 설명
@ExtendWith(MockitoExtension.class) Mockito와 JUnit5 연동
@Mock 가짜 객체 생성
@InjectMocks 테스트 대상에 mock 주입
@Test 테스트 메서드 표시
@DisplayName 테스트 이름을 보기 좋게 표시
@BeforeEach 매 테스트 실행 전 초기화 작업 수행