단위 테스트

2022. 3. 30. 12:10BackEnd(Java)/테스트

고민

프로젝트 진행 중 테스트를 하면서 각 역할별(domain, repository, service, controller 등...)들의 단위 테스트를 어떻게 작성해야 할지 고민이 생겼다.

먼저 Domain Layer는 객체 생성이라 테스트의 필요성을 느끼지 못하였고 Repository Layer는 EntityManager에 의존하여 기능 대부분을 수행하기에 DB에 데이터가 잘 들어 가는지 확인 과정을 진행하였다.

그런데 대부분의 핵심 로직은 Service Layer에 있다는 것을 인지하게 되었고 그러면 Service Layer는 어떻게 테스트를 진행해야 하는지 궁금해서 구글에 검색 중 좋은 글을 발견하게 되었다.

 

정리

Service는 Repository에 의존하기 때문에 Service 단의 단위 테스트가 힘들어진다. 그래서 repository 단을 DB에 접근하는 코드 없이 단순히 내가 의도한 값만 반환하도록 하는 MockRepository를 구현하여 테스트를 진행하면 되는데. 스프링 부트에서는 mockito라는 라이브러리를 제공하여 개발자에게 가짜 구현 클래스(mock)을 만들어주는 기능을 제공해 준다.

 

그러면 mockito 라이브러리에 대해서 다음 편에 같이 자세히 알아보자~

 


참고자료

https://www.inflearn.com/questions/46858

 

EntityManager를 사용하는 Repository의 단위 테스트는 어떻게 수행하나요? - 인프런 | 질문 & 답변

이번 강의에서는 Service 단위 테스트를 주로 수행하셨는데, Repository나 Domain 단위 등으로 쪼개서 테스트를 수행하는 게 보다 확실하다고 말씀해주셨습니다. 그 장점으로는 1) 테스트 속도가 빠르

www.inflearn.com

 

 

 

 

반응형

'BackEnd(Java) > 테스트' 카테고리의 다른 글

JUnit5 Parameterized Tests  (0) 2022.07.09
AssertJ을 사용해보자!  (0) 2022.07.09
[assertJ] isEqualTo vs isSameAs 비교  (0) 2022.03.30
@Transactional,@Commit  (0) 2022.03.30