inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

374

현자타임

작성한 질문수 25

0

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

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

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

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

 

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

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

 

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

단위테스트 테스트코드

답변 1

0

인프런 AI 인턴

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

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

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

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

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

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

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

[스타벅스 기프티콘] 개발자 분들에게 설문조사 좀 부탁드립니다!!

0

42

1

[스타벅스 기프티콘] 개발자 분들에게 설문조사 좀 부탁드립니다!!!

0

42

1

테스트 코드를 위한 @Builder, 생성자

0

162

2

Repository 단위테스트가 갖는 의미를 모르겠습니다.

2

399

1

리다이렉트(redirect)를 단위테스트로 할 수 있는 방법이 있을까요?

0

211

0

다시 복습하면서 테스트 코드 작성하는데 궁금한게 생겼습니다.

2

441

1

테스트 코드에서 오류가 발생했는데 아무리 찾아봐도 원인을 모르겠습니다..

0

734

1

스프링 단위 테스트 진행 및 통합 테스트 진행 문제 발생

0

228

0

테스트 코드 단축키가 안먹히는데 혹시 이유가 있을까요ㅠ?

0

413

3

테스트코드와 예외처리는 어떤 강의에서 볼 수 있을까요?

0

264

1

테스트의 중요성

0

220

1

ObjectProvider의 장점이 이해가 안됩니다

5

848

1