인프런 커뮤니티 질문&답변

마운틴님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑

실무에서 사용하는 테스트케이스 질문입니다

작성

·

241

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)


3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)


[질문 내용]
안녕하세요. 테스트케이스 작성 중 실무에서는 테스트 케이스를 어떻게 작성하는지 궁금합니다!

현재 저는 3년차 C# 개발자인데 이직을 위해 영한님 영상을 보면서 공부중입니다. 사이드 플젝에서 테스트케이스를 작성하려고 하는데

Q1.JPA를 사용하는데 실무에서도 테스트 케이스는 서비스만 작성하나요?

Q2.컨트롤러도 테스트 케이스를 작성한다면 AssertJ는 어떤식으로 컨트롤러를 테스트 하나요?

답변 1

1

안녕하세요. 님, 공식 서포터즈 OMG입니다.
.

Q1)

컨트롤러, 서비스, 레포지토리, 엔티티 등 테스트는 필요에 따라 개발합니다. 서비스에만 국한되지 않습니다.
JPA의 실무 테스트는 영한님의 JPA활용1편 강의를 적극 추천드립니다. :)

Q2)

아무래도 컨트롤러는 웹의 요청과 응답을 처리하는 부분이다 보니 아래와 같이 스프링에서 제공하는 MockMvc를 사용하여 테스트가 진행됩니다.

 

image

위의 2개의 테스트 중 밑줄친 첫번째만 간단히 설명 드리면,

루트로 들어온 get 요청에 응답으로 200 상태코드와 응답 본문으로 "Hello World" 문자열이 포함되는지 검증하는 코드입니다.

위와 같은 방식으로 컨트롤러 테스트가 진행되며 아쉽게도 현재까지 오픈된 영한님의 강의 중에는 포함되지 않는 내용이여서 별도의 영한님의 강의를 안내드리기는 힘들고 아래의 공식문서나 구글 검색을 하시면 많은 자료들을 확인하실 수 있습니다.

 

그리고, assertJ 부분은 service 혹은 repository를 호출해서 얻은 반환 데이터의 검증을 진행하시면 될 것 같습니다.

예시는 아래 깃헙에서 Controller테스트 코드를 확인해주세요.

패키지 하위에 2개의 controller 테스트가 보이실텐데요, 말씀드린 mockmvc테스트와 함께 assert로 검증하는 코드도 첨부되어 있으니 이러한 검증 코드가 assertJ로 대체된다고 보시면 됩니다.

 

https://github.com/whiteship/studyolle/tree/master/src/test/java/com/studyolle/modules/account 

 

참고)

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features

.
감사합니다.