본문 바로가기
Web/스프링 부트와 aws로 구현하는 웹서비스

3. 롬복

by 장인이 2021. 7. 14.

해당 게시물들은 이동욱 저자님의 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 공부하며 기록한 것입니다.

 

 이번 게시물에서는 롬복 설치, hellocontroller를 롬복으로 전환해 볼 것이다. 기존의 controller를 롬복으로 전환할 경우 어떤 기능에 문제가 생길 지 모르지만, 우리는 테스트 코드를 통해 동작 여부를 확인할 수 있다.

 

 

 

 우선 기존 build.gradle에 lombok 을 추가한후, gradle을 새로고침하여 라이브러리를 다운받는다. 그 후, .ignore를 받을때와 같이 Ctrl+Shift+A(맥은 Command+Shift+A)를 입력한 후 plugins을 입력한다.

 

 그 후 marketplace에서 Lombok을 찾아 설치한후, intelij ide를 재시작한다.

 

 

 마지막으로 Enable annotation processing을 체크하면 세팅이 끝난다.

 롬복을 사용하고 싶을 경우 플러그인 설치는 한번만 하면 되지만, 프로젝트마다 build.gradle에 추가하고 Enable annotation processing을 체크해 줘야 한다.

 

 

 근데 롬복은 어떤 라이브러리일까? 롬복은 자바 개발자들이 필수로 생각하는 라이브러리로서, 자바 개발시 자주 사용하는 Getter, Setter, 기본생성자, toString 들의 기능들을 어노테이션으로 자동 생성해준다.

 이제 기존에 작성한 HelloController를 롬복으로 변환해 보겠다.

 

 우선 web패키지에 dto패키지를 생성하고, HelloResponseDto.java를 생성한다. 앞으로 모든 Dto는 dto패키지에 추가하기로 하며, 코드를 작성한다.

 

 

 @Getter를 통해 선언된 모든 필드의 get을 생성해 주며, @RequiredArgsConstructor를 통해 "final"이 포함된 모든 필드의 생성자를 생성해 준다.

 

 

 HelloController에 롬복을 활용하기 전, 이 Dto에 사용한 롬복이 잘 작동하는지 테스트코드를 작성해 보자. 마찬가지로 Test의 web패키지 안에 dto패키지를 만든 후, HelloResponseDtoTest.java를 생성한다.

 

  여기서 assertThat은 assertj라는 테스트 검증 라이브러리의 검증 메소드로, 검증하고 싶은 대상을 메소드로 받는다. isEqualTo또한 assertj의 비교 메소드로, assertThat의 메소드와 isEqualTo의 값이 같을 때만 성공한다.

 

 

 하지만 실제로 실행해본 결과, 오류가 발생하였다. 원인으로는 책에도 적혀있듯이 해당 책은 2019년도에 작성되어 gradle 4를 기준으로 작성하였으며, 현재 나의 gradle버전과 호환되지 않기 때문이다. 따라서 우선은 gradle 버전을 변경하여 책대로 진행하고, 추후에 다른 방법을 배울 예정이다.

 

 

 terminal에 들어가 버전을 낮춘 결과, 정상적으로 테스트가 성공하는 것을 확인할 수 있었다.

 

 

 이 테스트가 성공함에 따라 lombok의 @Getter, @RequiredArgsConstructor로 생성자과 get 메소드가 자동 생성된다는 것을 확일 할 수 있다. 따라서 HelloController에 새로 만든 HelloResponseDto를 사용하도록 추가해 본다.

 

 

 

마지막으로 HelloControllerTest에 위에 적은 코드를 테스트하는 테스트 코드를 작성해본다.

 

 

 mvc에서 .path와 jsonPath가 새로 등장하였다. .path는 요청할 파라미터를 설정하는 함수로, String만 가능하여 int혹은 날짜등의 형식은 String형태로 변경한 후 사용해야 한다. jsonPath는 JSON 응답한 값을 검증하는 메소드로서, $을 기준으로 필드명을 명시하고 올바르면 통과시킨다.

 


- 학습 내용 저장할 github

https://github.com/imgzon3/imgzon3-springboot-test

 

imgzon3/imgzon3-springboot-test

Contribute to imgzon3/imgzon3-springboot-test development by creating an account on GitHub.

github.com

 

댓글