[Spring Boot] SpringBoot 테스트 작성하기

FFTL:)·2021년 12월 8일
1
post-thumbnail

지금은 테스트 코드에 대하여 공부하고 있습니다. 나름 어느 정도의 테스트 코드를 작성하고 있기는 한데 아직도 어려운 부분이 너무 많습니다.

처음부터 적어보자면 Spring Boot test를 구글에 검색하면 통합 테스트, Junit4, Junit5로 단위테스트, Mock, @WebMvcTest등등 굉장히 많은 키워드들이 검색이 됩니다. 이에 대해 기록하고자 정리해 보았습니다.

  • 통합테스트 : 주로 @SpringBootTest어노테이션을 붙여 진행하게 되며 실제 운영환경과 같이 전체 플로우가 동작하는지 확인할 수 있는 테스트입니다. 이는 실행할 때 @SpringBootApplication을 찾아가서 모든 빈을 로드하기 때문에 커다란 프로젝트 일수록 많은 부담을 가지게 됩니다.

  • 단위테스트 : 말 그대로 단위별로 테스트를 진행하는 것 입니다. @Controller, @Service, @Repository를 각각 테스트하게 되며 빈들을 로드하는 것이 아니기 때문에 테스트에 필요한 기능들을 @Mock을 이용하여 임시로 직접 만들어서 테스트에 사용합니다. 이는 모든 빈들을 로드하는 통합 테스트에 비해서 부담을 덜 가져가게 됩니다.

  • Mock, Mockito : Mock은 실제 객체를 만들기 어렵거나 비용이 많이 들 때에 사용할 수 있는 더미 객체를 의미합니다. 그리고 Mockito는 자바에서 제공하는 Mock 관리 프레임워크로 Mock을 생성해주고 관리해주고 검증할 수 있도록 도와줍니다.

  • JUnit : Junit은 자바 프로그래밍 언어용 유닛테스트 프레임워크 입니다. 현재 대부분 사용되는 버전으로는 JUnit4, Junit5가 있으며 두 가지를 사용할 때에 할 수 있는 기능은 크게 다르지 않으나 사용할 때의 어노테이션 명칭들이 다릅니다.
    ( JUnit4 : @Before, @After .. / Junit5 : @BeforeEach, AfterEach )

저는 테스트에 대해서 찾아보며 궁금증이 많이 생겼습니다.

  1. 어떤 경우에 통합테스트를 진행해야하는지
  2. 어떤 경우에 단위테스트를 진행해야하는지
  3. 두 개 다 해야 올바른 테스트 인지?
  4. 단위테스트는 어떤 단위까지 테스트 코드를 작성해야 하는건지
  5. 테스트 코드를 작성하긴 했는데 이게 올바르게 테스트가 되는 것인지
  6. 단위 테스트를 진행할 때에는 update, delete 같이 이미 존재하는 데이터가 필요한 경우 어떻게 해야 하는지

이외에도 지금 당장 생각나지 않은 궁금증들도 있을 것입니다. 일단 제가 찾아가며 작성한 테스트 코드들과 찾아본 정보들을 이용해 위 궁금증 들에 대해서 찾아낸 정보들을 정리해 보도록 하겠습니다.

참고

계속해서 업데이트 예정인 글 입니다. 최종 업데이트 21-12-13

profile
생각하는 개발자가 되자!

0개의 댓글