본문 바로가기

전체 글290

Spring Rest Docs - Asciidoc Asciidoc이란? Spring Rest Docs를 통해 생성되는 텍스트 기반의 문서 포맷이다. (기술 문서 작성을 위해서 설계된 가벼운 마크업 언어이기도 하다) Asciidoc에 대해 https://docs.asciidoctor.org/asciidoc/latest/ https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#ex-normal Asciidoc 목차 구성 (1) 문서의 제목을 작성하기 위해서 =를 추가 (====와 같이 =의 개수가 늘어날 수록 글자는 작아짐) (2) 목차에서 각 섹션에 넘버링을 해주기 위해서 :sectnums:를 추가 (3) :toc: 목차를 문서의 어느 위치에 구성할 것인지를 설정 (4) :toclevel.. 2022. 11. 14.
TDD TDD란? Test Driven Development의 약자로, 테스트 주도 개발이라는 뜻이다. 테스트 주도 개발이란 건 테스트를 먼저 하고 코드 구현은 그 다음에 한다는 의미이다. TDD 개발 방식 실패하는 테스트 → 실패하는 테스트를 성공할 만큼의 기능 구현 → 성공하는 테스트 → 리팩토링 → 실패하는 테스트와 성공하는 테스트 확인 유효한 패스워드인지 검증하는 방식을 예로 들면 다음 과정과 같다. 패스워드가 특수문자를 포함하면서 알파벳 소문자를 포함하는지 테스트, 검증, 리팩토링 단계 반복 패스워드가 특수문자 + 알파벳 소문자 + 알파벳 대문자를 포함하는지 테스트, 검증, 리팩토링 단계 반복 패스워드가 특수문자 + 알파벳 소문자 + 알파벳 대문자 + 숫자를 포함하는지 테스트, 검증, 리팩토링 단계 반.. 2022. 11. 13.
Testing - Mockito Mock이란? 가짜 객체를 의미한다. 단위 테스트나 슬라이스 테스트 등에 Mock 객체를 사용하는 것을 Mocking이라고 한다. 테스트에서 Mock 객체를 사용하는 이유 Mock 객체를 사용하지 않는 슬라이스 테스트 실행 흐름을 보면 다음과 같다. (Controller를 테스트하기 위한 슬라이스 테스트) Controller만을 테스트 한다기에는 서비스 계층과 데이터 액세스 계층, 그리고 데이터베이스까지 동작 흐름이 이어진다는 것을 알 수 있다. (거의 통합 테스트라고 봐도 무방하다) 이 경우에 하나의 계층만을 테스트 하는 슬라이스 테스트의 목적에 맞지 않는다. 이때 필요한 것이 바로 Mock 객체이다. Mock 객체를 사용한 Controller의 슬라이스 테스트 실행 흐름을 보자. Mock 객체를 사용.. 2022. 11. 13.
Spring Rest Docs Controller 테스트 케이스에 Spring Rest Docs 적용하기 https://jaeyoungb.tistory.com/196 여기서 Spring Rest Docs를 사용하기 위한 준비를 마쳤고, 이제 Controller 테스트 케이스에 Spring Rest Docs를 적용시켜보자. API 문서 생성을 위한 테스트 케이스 기본 구조 (1) @WebMvcTest은 Controller를 테스트 하기 위한 전용 애너테이션, 괄호 안에는 테스트 대상 Controller 클래스를 지정 (2) JPA에서 사용하는 Bean 들을 Mock 객체로 주입 (Spring Boot 기반의 테스트는 항상 최상위 패키지 경로에 있는 xxxxxxxApplication 클래스를 찾아서 실행) (3) Spring Rest D.. 2022. 11. 12.
Spring MVC - API 문서화 API 문서화란? 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해 알아야 되는 요청 정보를 문서로 잘 정리하는 것을 말한다. 요청 정보에는 요청 URL(또는 URI), Request Body, Query Parameter 등이 있다. 왜 필요할까? 우리가 만든 REST API 기반의 백엔드 애플리케이션을 클라이언트 쪽에서 사용하기 위해서이다. 우리가 만든 제품을 고객이 사용할 수 있도록 메뉴얼을 만들어주는 것이라고 생각하면 된다. API 문서 생성의 자동화가 필요한 이유? 우리가 만든 애플리케이션의 API들을 모두 수기로 작성하는 것은 매우 힘든 일이다. (API의 수가 적다면, 충분히 만들만하다고 생각이 될 수도 있다) 애플리케이션의 기능은 언제든지 추가될 수 있고, 운영 중에 .. 2022. 11. 12.
2022. 11. 11. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - API 문서화 API 문서화 Spring Rest Docs ▶ 이미 알고 있는 내용은 무엇인가? 모두 처음 배우는 내용들이다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? API 문서화란 클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 되는 요청 정보(URL or URI, Request Body, Query Parameter 등등)를 문서로 잘 정리하는 것을 말한다. Spring Rest Docs를 통해서, API 문서를 자동으로 생성할 수 있다. Spring Rest Docs 문서화 방식은 테스트 케이스를 반드시 작성하고, 그 테스트 케이스의 결과가 'passed'여야 API 문서.. 2022. 11. 11.
2022. 11. 10. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - Testing Mockito TDD ▶ 이미 알고 있는 내용은 무엇인가? Mockito는 처음 배우는 내용이고, TDD란 용어는 익히 들어봤다. 오늘도 열심히 임하자! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? Mock은 가짜 객체를 말하며, Mockito는 Mock 객체를 생성하고 진짜처럼 동작하게 하도록하는 Mocking framework이다. @MockBean 애너테이션은 Bean에 대한 Mockito Mock 객체를 생성하고 주입해주는 역할을 한다. TDD란 테스트가 개발을 주도하는 방식으로, 테스트 코드를 먼저 작성한 후에 기능을 구현한다. ▶ 다른 사람에게 설명할 수 있는가? 이론에 대한 부분은 설명할.. 2022. 11. 10.
2022. 11. 09. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - Testing Hamcrest를 사용한 Assertion 슬라이스 테스트(Slice Test) ▶ 이미 알고 있는 내용은 무엇인가? 모두 처음 배우는 내용들이다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? HamCrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. 다음과 같은 이유들로 JUnit에 지원하는 Assertion 메서드보다 더 많이 사용된다. Assertion을 위한 Matcher가 자연스러운 문장으로 이어지므로, 가독성이 향상된다. 테스트 실패 메시지를 이해하기 쉽다. 다양한 Matcher를 제공한다. Hamcrest만으로 던져진 예외를 테스트하기 위.. 2022. 11. 9.
Spring MVC - Testing(2) Hamcrest JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. Assertion을 위한 Matcher가 이해하기 쉬운 문장이므로, 가독성이 좋다. 다양한 Matcher를 제공한다. 테스트 실패 메시지를 이해하기 쉽다. JUnit의 Assertion 메서드를 사용한 클래스를 Hamcrest의 Matcher를 이용한 클래스로 변환 Hamcrest의 Matcher를 이용한 코드 줄을 보면, 'assert that actual is equal to expected'라고 이어 읽을 수 있다. '결과 값이 기대 값과 같다는 것을 검증한다'라고 해석할 수 있고, 이것이 가독성이 좋다는 것이다. (Custom Matcher를 직접 구현해서 사용할 수도 있다) Ref) Ham.. 2022. 11. 9.