지금은 테스트 코드에 대하여 공부하고 있습니다. 나름 어느 정도의 테스트 코드를 작성하고 있기는 한데 아직도 어려운 부분이 너무 많습니다.
처음부터 적어보자면 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 )
저는 테스트에 대해서 찾아보며 궁금증이 많이 생겼습니다.
이외에도 지금 당장 생각나지 않은 궁금증들도 있을 것입니다. 일단 제가 찾아가며 작성한 테스트 코드들과 찾아본 정보들을 이용해 위 궁금증 들에 대해서 찾아낸 정보들을 정리해 보도록 하겠습니다.
참고
계속해서 업데이트 예정인 글 입니다. 최종 업데이트 21-12-13