부트캠프/코트스테이츠 백엔드 코스

35일차 회고

태태코 2023. 5. 1. 22:36
반응형

오늘은 테스트 케이스에 대해 작성하는 방법에 대해서 정리하고자 한다.

기본적으로 테스트는 기능테스트, 통합테스트 , 단위 테스트로 나뉘고

기능 테스트 애플리케이션 전체
통합 테스트 데이터베이스와 연결하여 테스트
슬라이스 테스트 애플리케이션 내 메서드 기능 

FIRST원칙을 따르는데 

FAST 빠르게           

Independent 독립적으로

Repeatable 반복적으로

Self-validating 셀프 검증이 되도록

Timely 시기 적절하게

라는 원칙을 따르게 된다.

보통 JAVA에서는 Junit을 사용하여 단위 테스트를 하게 되고, 

 

Assertion(어써션)이란?

Assertion(어써션)을 검색해 보면 우리말로 ‘단언’, ‘단정’ 등의 뜻을 확인할 수 있는데 그 의미가 선뜻 와닿지 않습니다.

테스트 세계에서 Assertion(어써션)이라는 용어는 테스트 결과를 검증할 때 주로 사용합니다.

 

 assertEquals(expected, actual);

이런 식으로 사용하여 검사를 진행하게 된다.

assertNotNull(currencyName, "should be not null");

null에 대한 검사도 할 수 있고,

  assertThrows(NullPointerException.class, () -> getCryptoCurrency("XRP"));

예외에 대한 검사도 할 수 있다.
Hamcrest란 Junit에서의 결과를 조금더 알아보기 쉽게 하기위해서 사용하는 것이고,

assertThat(actual, is(equalTo(expected)));

이런 식으로 사용하게 된다. 하지만 예외의 부분에서는 단독적으로 처리하지 못해서 junit이랑 같이 사용하거나,

Hamcrest 만으로 던져진 예외를 테스트하기 위해서는 Custom Matcher를 직접 구현해서 사용할 수 있습니다.

 

JAVA에서는 Spring boot를 통한 API도 테스트 할 수 있다.

mockMvc

이란 프레임 워크를 사용하게 되고 , 

@SpringBootTest       
@AutoConfigureMockMvc

를 명시해 주어야 한다. 그리고 @Autowired 를 통해 MockMvc를 불러와야한다.

 

DTO를 통하여 먼저 객체를 만든후 객체를 JSON형식으로 만들고,

String content = gson.toJson(post);
ResultActions actions =
                mockMvc.perform(                        // (3)
	                                post(location)  // (4)
                                        .accept(MediaType.APPLICATION_JSON) // (5)
                                        .contentType(MediaType.APPLICATION_JSON) // (6)
                                        .content(content)   // (7)
                                );

 

이런 맥락을 통해서 API를 호출하게 된다 . 

 actions

나온 actions을 통해서 .andExpect를 통해 검증을 하거나 header().string(~~)해서 확인 할 수있다.

 

mockMvc.perform(
                        get(location)      
                                .accept(MediaType.APPLICATION_JSON)
                )

get도 마찬가지로써 만약 parm값이 필요하다면 .parm("변수명","값")이렇게 매핑해주면 된다.

 

테스트를 하다보면 같은 코드의 반복이 눈에 띄게 보이는데 이것을 따로 묶어서 매핑시켜주면 편하게 사용 가능하다.

@DataJpaTest 

이것을 붙이고 Repository에 대한 테스트도 가능하게 되는데 이것은, 자동으로 Rollback이 되기에 아주 편리한 데이터베이스와의 관계를 확인 할 수 있다.

반응형

'부트캠프 > 코트스테이츠 백엔드 코스' 카테고리의 다른 글

40 회고  (0) 2023.05.08
37(테스팅과 API document작성)  (0) 2023.05.05
32~34  (0) 2023.04.30
30~31  (0) 2023.04.27
28~30회고  (0) 2023.04.16