프로젝트의 원활한 리팩토링을 위해, 테스트 코드를 작성하기로 했다.
처음에 프로젝트를 배포할 때는 테스트코드를 작성하지 않고, 각자 맡은 테스트 케이스를 postman에서 실행하는 방식으로 진행했었다.
그런 테스트 방식은 매우 비효율적이거니와 테스트코드를 java로 한번 짜봐야하지 않을까 싶어서 리팩토링 과정에 넣기로 했다.
그러기 위해선 모르는 부분에 관한 다양한 공부와 회의가 필요했다.
단위 테스트
프로그램을 작게 쪼개서 작은 조각들이 정확하게 동작하는지 검사/확인하고 에러를 확인함으로써 정확하게 어느 부분이 잘못되었는지를 빠르게 판단할 수 있게 한다.
대신, 모듈간의 상호 작용 검증은 못한다.
▪️ Junit
자바 프로그래밍 언어용 단위테스트 프레임워크
▪️ Mockito framework
Mock 객체를 쉽게 만들 수 있는 라이브러리 제공하는 프레임워크
▫️ Mockito Annotation
▫️ @ExtendWith(MockitoExtension.class) : 테스트 클래스가 Mockito를 사용함.
▫️ @Mock : Mock 객체를 만들어 반환
▫️ @MockBean : Mock객체를 추가
▫️ @InjectMocks : @Mock 객체를 자신의 멤버 클래스에 주입
통합테스트
단위 테스트 하고 나서, 각 모듈들의 상호 작용이 제대로 이루어져있는지를 검증하는 테스트로써 모듈을 통합하는 과정에서 발생하는 오류를 찾는 테스트.
▫️ Controller -> Service -> Repository 순서로 진행된다.
▫️ Repository를 이용한 DB CRUD 사용가능
▫️ E2E 테스트 사용가능
( Client -> Controller -> Service -> Repository -> Client )
▫️ 순서 지정가능
이 둘을 전부할건지, 하나만 진행할건지 필요성을 따져서 회의를 진행해야 할 것 같다.