비즈니스 로직이 300라인 정도 되는데 단위 테스트를 어떻게 해야할까 고민인데 어떻게 하면 좋을까요!

23.12.11 12:10 작성 조회수 213

0

300라인 정도 되는 비즈니스 로직이 있는데요.

이 로직 안에는 데이터베이스 연동하는 부분과

map / reduce 등으로 데이터를 변환하는 부분

이렇게 섞여있는데 단위테스트를 구현하려다보니 어떻게 접근해야할지 막막하군요..

 

안의 로직의 기능 별로 함수로 분리하여 처리하여 각 기능 별로 테스트를 처리하고

이 로직은 실행 -> 결과만 단위 테스트들의 통합 테스트만 진행할지 고민이네요.

 

좋은 아이디어가 있으시다면 공유 부탁드려요 ㅠㅠ!!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.12

안녕하세요, 인프런 AI 인턴입니다.

현자타임님, 단위 테스트를 구성하는 것이 막막하시군요. 300 라인이 넘는 비즈니스 로직이 있을 때는, 먼저 단일 책임 원칙(SRP: Single Responsibility Principle)을 적용하여 로직을 여러 작은 단위로 분리하는 것이 좋습니다. 각각의 작은 단위는 독립적으로 테스트 가능한 상태가 되어야 합니다. 데이터베이스 연동 부분과 데이터 변환 부분 등을 분리하여 각각의 부분을 별도의 함수나 클래스로 만들고, 이들을 모의 객체(mock objects)를 이용하여 단위 테스트를 수행합니다.

스프링 부트에 포함된 테스트 유틸리티와 지원 클래스, ‘spring-boot-starter-test’ 스타터를 통해 테스트 관련 의존성을 제공하므로 이를 활용할 수 있습니다. 통합 테스트를 위해서는 spring-test 모듈을 직접 선언하거나 스타터를 통해 간접적으로 불러올 수 있습니다. spring-test 모듈을 사용하기 전에 스프링 프레임워크 참조 문서의 테스팅 관련 섹션을 읽어보시는 것이 도움이 됩니다.

또한, 통합 테스트는 애플리케이션의 배포나 다른 인프라에 연결하지 않고도 수행될 수 있어야 합니다. 잘 설계된 테스트는 실제 인프라스트럭처에 의존하지 않고도 애플리케이션 컨텍스트(ApplicationContext)를 사용하여 통합 테스트를 수행할 수 있게 해줍니다.

다음은 참조하실 문서의 원문 출처 URL입니다.
- Spring Boot 참조 문서 - 테스팅 방법
- Spring Boot 참조 문서 - 스프링 애플리케이션 테스팅
- Spring Boot 참조 문서 - 테스트 유틸리티

코드를 리팩터링 하고 테스트 케이스를 작성하는 과정에서 자문을 구하고자 한다면, 인프런을 포함한 다양한 학습 플랫폼에서 제공되는 스프링 관련 강좌와 커뮤니티에서도 도움을 얻을 수 있습니다.

단위 테스트에 접근하시는 데 어려움을 겪고 계신 만큼 천천히 하나씩 분리하고, 각 기능별로 테스트를 진행하며 점차 시스템을 개선해 나가시길 바랍니다.