My Melody Is Cute Spring MVC 테스팅(Testing) 2
본문 바로가기

개발공부🌷/Spring MVC

Spring MVC 테스팅(Testing) 2

🌼슬라이스 테스트

각 계층에 구현해 놓은 기능들이 잘 동작하는지 특정 계층만 잘라서(Slice) 테스트 하는 것

 


🌟API 계층 테스트

API계층의 테스트 대상은 클라이언트의 요청을 받아들이는 Controller

 

@Transactional
@SpringBootTest
@AutoConfigureMockMvc
public class ControllerTestDefaultStructure {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void postMemberTest() {
        //given 테스트용 request body 생성
        //when MockMvc 객체로 요청 URI,HTTP 메서드등 지정 후 대상 Controller 호출
        //then Controller Controller에서 응답으로 수신한 HTTP Status 및 response body 검증
    }
}

 

@SpirngBootTest

Spring Boot기반의 애플리케이션을 테스트 하기 위한 Application Context생성

통합테스트에 적합

 

 

@AutoConfigureMockMvc

테스트를 위한 애플리케이션의 자동구성작업을 해줌

MockMvc

Tomcat같은 서버를 실행하지 않고 Spring 기반 애플리케이션 테스트를 하게 환경을 지원해주는 Spring MVC 테스트 프레임워크

 

@AutoConfigureMockMvc꼭 달아줘야함

 

 @Transactional 

자동초기화

 

1.Given

request body에 포함시키는 요청데이터와 동일한 역할

JSON 포맷으로 request body에 포함

 

Gson 라이브러리를 사용하려면

build.gradle 에 추가해야함

implementation 'com.google.code.gson:gson'

 

 

2.When

perform()

ResultActions타입의 객체를 리턴하는데 이 객체를 이용해서 request에 대한 검증을 수행할 수있음

메서드에 요청을 전송하려면 먼저 호출해야함

 

Http Method, request URL, path variable 을 위한 API메서드

 

 

MockMvcRequestBuilders - GET,POST,PUT,DELETE 요청방식과 매핑되는 get(),post(),put(),delete() 메소드 제공

request body를 위한 API메서드

content(...)

 

query parameter

params(...)

 

response body 검증

andExpect(jsonPath("$.data.~~").value(...))

3.Then

response body(JSON)형식의 각 프로퍼티 값을 검증

 


 

🌟데이터 액세스 계층 테스트

 

DB의상태를 테스트 케이스 실행 이전으로 되돌려서 깨끗하게 만들어야함

-> 각각의 테스트 케이스에 독립성이 보장되어야 함

 

🍀테스트 클래스 구조

@DataJpaTest
public class RepositoryTestDefaultStructure {
⠀
    @Autowired
    private MemberRepository memberRepository;
   ⠀  
    @Test
    public void saveMemberTest() {
    // 테스트하고자 하는 Controller 핸들러 메서드의 테스트 케이스 작성
       ⠀  
        // given
        // 테스트용 데이터 준비 ( 객체에 데이터 저장 )
     ⠀   
        // when
        // Repository에 객체 저장
        // 정보들 중 하나만 뽑아 검증하고 싶다면 Repository의 findByXXX() 메서드 사용
       ⠀ 
        // then
        // 정보가 잘 저장되었는지 검증 (Assertion)
    }
}

@DataJpaTest

데이터 액세스 계층을 테스트하기위한 가장 핵심적인 방법

@Transactional 애너테이션을 포함하고 있어서 종료되는 시점에 rollback처리 됨

 

 

 

 

'개발공부🌷 > Spring MVC' 카테고리의 다른 글

Spring MVC Spring Rest Docs  (2) 2023.12.08
Spring MVC 테스팅(Testing)3  (0) 2023.12.07
Spring MVC 테스팅(Testing)  (0) 2023.12.06
Spring MVC 트랜잭션(Transaction)  (0) 2023.12.05
Spring MVC JPA 2  (0) 2023.11.28