Spring 6

[Test] ArgumentCaptor 란?

배경 테스트 코드를 짜면서 Stubbing을 통해서 제가 원하는 대로 코드를 조작할 수 있었습니다. 또한 해당 메서드의 Stubbing이 잘 동작하는지 Mockito.verify, BDDMockito.then 을 이용하여 해당 메서드가 몇 번 호출이 되었고 어떤 인자를 갖고 호출이 되었는지 확인할 수 있었습니다. 점차 다양한 테스트 코드를 짜면서 해당 코드의 인자의 값이 로직에서 의도한 대로 세팅이 되었는지 확인을 필수로 해야하는 경우가 생겼습니다. 이 때 자주 사용했던 ArgumentCaptor 라는 클래스에 대해 알아보도록 하겠습니다. 이 글에서 사용한 코드는 해당 github에 저장되어 있습니다. 테스트 코드 GitHub - Rabongg/Test-Junit: Junit을 이용한 test 예제 Ju..

[Test] Mock, Spy

배경 테스트 코드를 작성할 때 Mock, Spy, Stubbing이라는 단어는 빼 놓을 수 없습니다. 테스트 코드를 처음 접했을 때 해당 용어들이 많이 헷갈렸습니다. 테스트 코드를 계속 작성을 해나가면서 어떤 상황에서는 Spy를 사용하고 어떤 상황에서는 Mock을 사용하고 이런 것들을 stubbing이라고 말하는 구나를 깨우칠 수 있었습니다. 이번에는 Test의 기본이 되는 Mock, Spy에 대해서 얘기해보려고 합니다. 해당 글에서 사용한 코드는 밑의 github에 있습니다. 테스트 소스 코드 GitHub - Rabongg/Test-Junit: Junit을 이용한 test 예제 Junit을 이용한 test 예제. Contribute to Rabongg/Test-Junit development by cr..

[Test] 테스트 코드를 왜 작성해야할까?

배경 회사에서 테스트 코드를 작성하면서 문득 테스트 코드를 왜 작성해야하는가에 대한 생각을 하게되었습니다. 많은 블로그에서 테스트 코드를 잘 작성하면 로직이 잘 동작하는지 빠르게 확인할 수 있고, 여러 예외 케이스들도 확인할 수 있다 등 여러 장점에 대해서 설명을 하고 있습니다. 오늘은 제가 테스트 코드를 작성하면서 개인적으로 테스트 코드를 작성하면 어떤 이점이 있는지 얘기해보려고 합니다. 제가 여기서 다루는 테스트 코드는 Unite Test 를 의미합니다. 해당 기능 빠르게 확인 테스트 코드를 통해서 기능을 쉽게 확인할 수 있습니다. 기능이라면 해당 로직에 어떤 값이 들어왔을 때 어떻게 동작하는지를 파악할 수 있다는 뜻입니다. java spring boot를 기준으로 보겠습니다. 보통 spring bo..

[Spring] Spring Container란?(feat: DI, IOC, Singleton)

DI, Ioc, Singleton, Bean 등 Spring을 공부하는 사람이라면 한 번쯤은 들어봤을 내용입니다. 저 또한 Spring을 처음 공부할 때, 블로그나 강의에서 많이 듣곤 하였습니다. Spring boot를 사용할 때 이러한 개념들이 헷갈려서 정리하려고 합니다. 이 글에서는 엄청 자세하게 이야기를 하지 않으려고 합니다. 제가 공부하면서 헷갈렸던 부분이나, 연관성이 어떻게 있는지에 대해서 풀어보려고 합니다. 자세한 내용이 궁금하시면 '김영한님의 스프링 핵심원리 기본편'을 들으시는 것을 추천드리겠습니다. Spring Container Spring Container는 쉽게 말해 객체를 관리해주는 컨테이너라고 생각하면 됩니다. 아무 객체나 관리해주는 것이 아니라, 당연히 개발자가 해당 객체를 관리해..

Spring 2023.01.17

[Jackson] 왜 field가 1개인 DTO는 기본 생성자가 필요할까?(1)

API server를 개발하면서 DTO를 이용해서 client으로부터 request를 받거나 server내의 다른 layer로 넘기곤 합니다. Spring boot를 이용하여 프로젝트를 할 때도 DTO를 이용하여 데이터를 주고받곤 하였습니다. client가 Content-Type을 application/json 형태로 요청을 할 경우, Node.js 기반의 express 와 Nest.js와는 다르게 Spring boot는 Json을 객체로 변환시켜주는 과정이 필요합니다. 이 때, jackson library가 json을 객체로, 객체를 json으로 변환해줍니다. Jackson library는 별도로 설치할 필요가 없고 spring web mvc dependency를 설치하면 자동으로 설치가 됩니다. sp..

Spring 2022.12.15

[Lombok] Lombok에서 생성자 Annotation에 대해 알아보자

Spring 을 이용해서 프로젝트를 하면 Annotation을 이용해서 쉽게 코드를 작성할 수 있는 lombok 라이브러리를 사용하곤 했습니다. 수 많은 Annotation이 있다보니 정확히 내부적으로 어떻게 동작하는지도 모르고 종종 사용하였습니다. spring의 생성자 주입과 관련된 생성자 annotation에 대해서 헷갈려 정리하려고 합니다. 생성자 관련 Annotation 종류 Lombok에서 생성자 관련 Annotaion은 3가지가 있습니다. @AllArgsConstructor @RequiredArgsConstructor @NoArgsConstructor 하나씩 어떤 조건의 생성자를 만들어주는지 확인해 보겠습니다. @AllArgsConstructor 영어 뜻 그대로 모든 argument를 가지고 ..

Spring 2022.10.29