분류 전체보기
-
특정 테스트를 작성할 때 input의 형태는 정해져 있는데 많은 값들을 검증해야 하는 경우에 각각을 테스트케이스로 만들기는 너무 귀찮고 번거롭다.. 이러한 상황에서 활용할 수 있는 JUnit 어노테이션을 알아보자. Dependency 스프링 부트를 이용해서 개발하고 있다고 하면 테스트를 작성하기 위해 추가해야 할 dependency는 간단하다 // gradle dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' } // maven org.springframework.boot spring-boot-starter-test test 사용법 예시로 다양한 osType별 system type 체크가 필요할 때 우..
[SpringTest] @ParameterizedTest 사용해보기특정 테스트를 작성할 때 input의 형태는 정해져 있는데 많은 값들을 검증해야 하는 경우에 각각을 테스트케이스로 만들기는 너무 귀찮고 번거롭다.. 이러한 상황에서 활용할 수 있는 JUnit 어노테이션을 알아보자. Dependency 스프링 부트를 이용해서 개발하고 있다고 하면 테스트를 작성하기 위해 추가해야 할 dependency는 간단하다 // gradle dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' } // maven org.springframework.boot spring-boot-starter-test test 사용법 예시로 다양한 osType별 system type 체크가 필요할 때 우..
2023.11.17 -
리액티브 스트림즈(reactive streams)란 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양 데이터 스트림을 non-blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 그 구현체 예시 RxJava, Reactor.. 리액티브 스트림즈(reactive streams) 구성 요소 publisher : 데이터 생성하고 통지 subscriber : 구독한 publisher로 부터 통지된 데이터를 전달받아서 처리 subscription : publisher에 요청할 데이터의 개수를 지정, 데이터의 구독을 취소 processor : publisher + subscriber Publisher interface public interface Publishe..
[Reactive] Reactive Streams(리액티브 스트림즈)리액티브 스트림즈(reactive streams)란 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 표준 사양 데이터 스트림을 non-blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 그 구현체 예시 RxJava, Reactor.. 리액티브 스트림즈(reactive streams) 구성 요소 publisher : 데이터 생성하고 통지 subscriber : 구독한 publisher로 부터 통지된 데이터를 전달받아서 처리 subscription : publisher에 요청할 데이터의 개수를 지정, 데이터의 구독을 취소 processor : publisher + subscriber Publisher interface public interface Publishe..
2023.11.13 -
reactive : 반응을 하는 reactive system 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화하는 시스템 리액티브 선언문 설계 원칙 수단 - means message driven : 메시지 기반 통신 형성 - form elastic(탄력성) : 시스템의 작업량이 변화하더라고 일정한 응답을 유지하는 것을 의미 resilient(회복성) : 시스템에 장애가 발생하더라도 응답성을 유지하는 것을 의미 가치 - value responsive(응답성) : 어떠한 상황에서도 즉각적으로 응답 가능한 시스템을 구축 -> 빠른 응답성을 바탕으로 유지보수와 확장이 용이한 시스템 reactive programming 리액티브 시스템을 구축하는 데 필요한 프로그래밍 모델 리액티브 시스템의 설계 원..
[Reactive] Reactive Programming(리액티브 프로그래밍)reactive : 반응을 하는 reactive system 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화하는 시스템 리액티브 선언문 설계 원칙 수단 - means message driven : 메시지 기반 통신 형성 - form elastic(탄력성) : 시스템의 작업량이 변화하더라고 일정한 응답을 유지하는 것을 의미 resilient(회복성) : 시스템에 장애가 발생하더라도 응답성을 유지하는 것을 의미 가치 - value responsive(응답성) : 어떠한 상황에서도 즉각적으로 응답 가능한 시스템을 구축 -> 빠른 응답성을 바탕으로 유지보수와 확장이 용이한 시스템 reactive programming 리액티브 시스템을 구축하는 데 필요한 프로그래밍 모델 리액티브 시스템의 설계 원..
2023.11.08 -
스프링 테스트를 작성하면 기존에 있는 테스트 코드를 참고해서 유사하게 만드는 경우가 많다 그러는 중간에 @Mock @MockBean 어노테이션을 다르게 사용하는 것을 발견하게 되었고 이 둘의 차이가 궁금해져서 찾아본 내용을 정리해보자 @MockBean import org.springframework.boot.test.mock.mockito.MockBean MockBean은 스프링프레임워크의 어노테이션으로 스프링 콘텍스트를 테스트할 때 사용된다. @Autowired와 같이 스프링 빈이 주입될 때 MockBean이 붙은 객체가 주입된다. -> Mock 객체를 생성하고, 스프링 컨텍스트에 등록을 한다 @SpringBootTest public class MockTests { @MockBean private Te..
[SpringTest] Mock, MockBean 차이점 알아보기스프링 테스트를 작성하면 기존에 있는 테스트 코드를 참고해서 유사하게 만드는 경우가 많다 그러는 중간에 @Mock @MockBean 어노테이션을 다르게 사용하는 것을 발견하게 되었고 이 둘의 차이가 궁금해져서 찾아본 내용을 정리해보자 @MockBean import org.springframework.boot.test.mock.mockito.MockBean MockBean은 스프링프레임워크의 어노테이션으로 스프링 콘텍스트를 테스트할 때 사용된다. @Autowired와 같이 스프링 빈이 주입될 때 MockBean이 붙은 객체가 주입된다. -> Mock 객체를 생성하고, 스프링 컨텍스트에 등록을 한다 @SpringBootTest public class MockTests { @MockBean private Te..
2023.11.01 -
Servlet을 사용한 Web Server를 구동 중이지만, 가끔 WebClient를 이용한 호출을 하는 경우도 있다. 이러한 경우에 WebMvcTest를 이용하여 어떻게 controller layer의 테스트 코드를 작성하는지 정리해 보자. 아래 코드는 reactive를 이용한 응답이 아닌 경우 일반적으로 사용하는 코드이다 @Test void test() throws Exception { BDDMockito.willThrow(new TestException()) .given(testService).addtt(any()); TestParam param = createParam(); this.mockMvc.perform(RestDocumentationRequestBuilders.post("/test/add..
[SpringTest] Reactive API WebMvcTest 작성(Mono, Flux)Servlet을 사용한 Web Server를 구동 중이지만, 가끔 WebClient를 이용한 호출을 하는 경우도 있다. 이러한 경우에 WebMvcTest를 이용하여 어떻게 controller layer의 테스트 코드를 작성하는지 정리해 보자. 아래 코드는 reactive를 이용한 응답이 아닌 경우 일반적으로 사용하는 코드이다 @Test void test() throws Exception { BDDMockito.willThrow(new TestException()) .given(testService).addtt(any()); TestParam param = createParam(); this.mockMvc.perform(RestDocumentationRequestBuilders.post("/test/add..
2023.10.28 -
spring rest doc 작성 코드의 상세 내역을 분석해 보자 import static org.mockito.ArgumentMatchers.any; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; import static org.springframework.restdocs.payload.Pa..
[SpringRestDocs] document 작성 상세spring rest doc 작성 코드의 상세 내역을 분석해 보자 import static org.mockito.ArgumentMatchers.any; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; import static org.springframework.restdocs.payload.Pa..
2023.10.25 -
Spring REST Docs Spring REST Docs는 스프링 프레임워크에서 제공하는 API 문서 자동화 도구 테스트를 실행하면서 생성한 요청과 응답을 기반으로 문서를 생성한다 -> 테스트 코드를 작성하면, API 문서는 덤으로! 테스트가 성공하면, 그 테스트에 대한 asciidoc 스니펫이 생성 -> 생성된 스니펫들 중에, 내가 문서에 명시하고 싶은 녀석들을 골라서 api문서 작성 Asciidoc adoc(Asciidoc)은 Markdown과 마찬가지로 문서 작성을 위한 경량형 마크업 언어 문서 자체는 .adoc 확장자의 text문서에 불과하고, Asciidoctor(https://asciidoctor.org/) 를 이용해 html이나 pdf 등으로 활용할 수 있다 사용해 보기 Maven dep..
[SpringRestDocs] Spring REST Docs이란 & 사용해보기Spring REST Docs Spring REST Docs는 스프링 프레임워크에서 제공하는 API 문서 자동화 도구 테스트를 실행하면서 생성한 요청과 응답을 기반으로 문서를 생성한다 -> 테스트 코드를 작성하면, API 문서는 덤으로! 테스트가 성공하면, 그 테스트에 대한 asciidoc 스니펫이 생성 -> 생성된 스니펫들 중에, 내가 문서에 명시하고 싶은 녀석들을 골라서 api문서 작성 Asciidoc adoc(Asciidoc)은 Markdown과 마찬가지로 문서 작성을 위한 경량형 마크업 언어 문서 자체는 .adoc 확장자의 text문서에 불과하고, Asciidoctor(https://asciidoctor.org/) 를 이용해 html이나 pdf 등으로 활용할 수 있다 사용해 보기 Maven dep..
2023.10.21 -
kafka란 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 분산형 pub-sub 메시징 플랫폼 -> 실시간 데이터를 처리할 수 있을 만큼 빠른 Message Queue Message Queue 메시지 큐는 프로그램(프로세스) 간의 데이터를 교환할 때 사용하는 기술 Broker, Zookeeper broker는 실행된 Kafka application 서버를 뜻한다 - Topic내의 Partition들을 분산, 유지 및 관리 zookeeper는 이러한 분산 메시지 큐의 정보를 관리해 주는 역할을 한다 - kafka를 띄우기 위해서는 주키퍼가 반드시 실행되어야 한다 - 3대 이상의 broker로 클러스터 구성 필요 Topic, Partion, Segment Topic은 Kafka 안에서 메..
[KAFKA] kafka 개념 및 관련 용어kafka란 실시간 스트리밍 데이터를 처리하기 위한 목적으로 설계된 오픈 소스 분산형 pub-sub 메시징 플랫폼 -> 실시간 데이터를 처리할 수 있을 만큼 빠른 Message Queue Message Queue 메시지 큐는 프로그램(프로세스) 간의 데이터를 교환할 때 사용하는 기술 Broker, Zookeeper broker는 실행된 Kafka application 서버를 뜻한다 - Topic내의 Partition들을 분산, 유지 및 관리 zookeeper는 이러한 분산 메시지 큐의 정보를 관리해 주는 역할을 한다 - kafka를 띄우기 위해서는 주키퍼가 반드시 실행되어야 한다 - 3대 이상의 broker로 클러스터 구성 필요 Topic, Partion, Segment Topic은 Kafka 안에서 메..
2023.10.11