TIL

TIL_20221109

번잔중 2022. 11. 9. 23:53

오늘 할 일

🧪 코드 스테이츠 55일차

[Spring MVC] 테스팅

  • Daily Coding
  • Hamcrest
  • 슬라이스 테스트 실습 및 페어

다른거

  • 1일 1커밋
  • 복습

오늘 배운 것

🎯 [Spring MVC] 테스팅

Hamcrest

  • JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework
  • Assertion을 위한 매쳐(Matcher)가 자연스러운 문장으로 이어지므로 가독성이 향상된다.
  • 테스트 실패 메시지를 이해하기 쉽다.
  • 다양한 Matcher를 제공한다.
  • 주로 매쳐는 assertThat(actual, is(equalTo(exepected))); 의 형태로 사용하는데, 영어 문장을 읽듯이 자연스럽게 읽을 수 있어서 가독성에 좋다.

슬라이스 테스트

  • 개발자가 각 계층에 구현해 놓은 기능들이 잘 동작하는지 특정 계층만 잘라서(Slice) 테스트하는 것을 슬라이스 테스트(Slice Test)라고 한다.
  • @SpringBootTest 애너테이션은 Spring Boot 기반의 애플리케이션을 테스트 하기 위한 Application Context를 생성한다.
  • @AutoConfigureMockMvc 애너테이션은 Controller 테스트를 위한 애플리케이션의 자동 구성 작업을 해준다. MockMvc 같은 기능을 사용하기 위해서 꼭 필요하다.
  • @MockMvc 애너테이션은 서버를 실행하지 않고 Spring 기반 애플리케이션의 Controller를 테스트 할 수 있는 완벽한 환경을 지원해주는 일종의 Spring MVC 테스트 프레임워크이다.
  • MockMvc로 Controller의 핸들러 메서드에 요청을 전송하기 위해서는 기본적으로 perform() 메서드를 먼저 호출해야 한다.
  • MockMvcRequestBuilders 클래스를 이용해서 빌더 패턴을 통해 request 정보를 채워 넣을 수 있다.
  • MockMvc의 perform() 메서드가 리턴하는 ResultActions 타입의 객체를 이용해서 request에 대한 검증을 수행할 수 있다.
  • Gson은 JSON 변환 라이브러리로 객체를 JSON 포맷으로 변환시켜 준다.
  • 데이터 액세스 계층을 테스트 하기 위해서는 DB의 상태를 테스트 케이스 실행 이전으로 되돌려서 깨끗하게 만드는 것이 필요하다.
  • @DataJpaTest 애너테이션을 사용하면 Spring Data JPA 환경에서 데이터 액세스 계층의 테스트를 손쉽게 진행할 수 있다.
  • @DataJpaTest 애너테이션은 @Transactional 애너테이션을 포함하고 있기 때문에 하나의 테스트 케이스 실행이 종료되는 시점에 데이터베이스에 저장된 데이터는 rollback 처리된다.

다른거

- 1일 1커밋

코플릿 문제 36번 insertionSort를 풀었습니다. quickSort에 비하면 insertionSort는 선녀입니다. 인덱스의 범위를 오른쪽 방향으로 늘려가면서 정렬하는 방식입니다. 인덱스가 증가하면서 새로운 값을 이미 정렬된 값들과 비교합니다.

 

Coplit 36 insertionSort - 코드는 비공개입니다❗️

 

- 복습

오늘 실습한 내용을 복습했습니다! 내용이 많아서 다 하지는 못했지만 나눠서 하겠습니다.

느낀점

  • 학습이 밀린 순간부터 매일이 고통이다. 새벽까지 공부하다보니 피로도가 너무 심해져서 정규 수업시간에 써야할 집중력과 에너지가 부족한 상태다. 내일은 무슨 일이 있어도 일찍 잠에 들어야겠다.
  • 테스트를 학습하면서 느낀 것은 역시나 많이 해봐야한다는 것이다. 포스트맨을 더듬더듬거리며 사용했었는데, 지금은 post, patch, get, delete에서 어떤 데이터를 어떤 형태로 만들어야 할지 머릿속에서 떠오르기는 한다. 물론 구현은 어려움 ^_^

내일 할 일

🛟 코드 스테이츠 56일차

[Spring MVC] 테스팅

  • Daily Coding
  • Mockito 개요 및 실습
  • Tdd

다른거

  • 1일 1커밋
  • 복습
  • 운동... 가능할까...?