본문 바로가기
개발/스프링

[혼자 구현하는 웹서비스] 2. (2) 테스트 코드와 롬복

by 카펀 2021. 6. 26.

0. 롬복이란

1. 롬복 설치하기

2. Hello Controller 코드를 롬복으로 전환하기

 

 

0. 롬복이란

롬복 (Lombok)은 Java로 개발할 때 자주 사용하는 코드 Getter, Setter, 기본생성자, toString 등을 어노테이션으로 자동 생성해 준다.

IntelliJ에서는 플러그인을 이용하여 쉽게 설치할 수 있다.

 

1. 롬복 설치하기

먼저 프로젝트에 롬복을 추가해 본다.

build.gradle의 dependencies 아래에 다음의 코드를 추가하자.

 

새로 추가한 코드를 하이라이트 처리했다.

저장하고 Gradle을 새로고침 하여 라이브러리 (또는 의존성이라고도 한다)를 내려받자.

 

좌측 상단의 새로고침 버튼을 눌러서 내려받자.

 

라이브러리를 내려받은 후에는 IntelliJ에서 사용할 플러그인을 설치해야 한다.

IntelliJ의 검색 단축키인 Ctrl (Cmd) + Shift + A를 입력하고, plugins를 찾아 선택한 후, marketplace에서 lombok을 선택하자.

 

설치 완료하면 위와 같이 보인다.

설치 후 IntelliJ를 종료 후 재시작하자.

 

Settings(Preferences) > Build, Execution, Deplyment > Complier > Annotation Processors 순으로 접근하자.

 

설정 화면

잘 모르겠으면 위 사진을 참고해서 접근하면 된다.

중앙 상단의 'Enable annotation processing' 의 체크박스를 선택해 주면 롬복의 설치가 끝난다.

 

2. Hello Controller 코드를 롬복으로 전환하기

이제 기존 코드를 롬복으로 변경해 보겠다.

지금처럼 작은 규모의 프로젝트라면 큰 어려움이 없지만, 현업에서 규모가 매우 큰 프로젝트를 롬복으로 전환할 수 있을까?

전환 중에 어떤 기능이 제대로 동작하지 않게 될지 예측할 수 없으므로 쉬운 일은 아니다.

하지만 우리는 앞서 테스트 코드를 통해 문제 발생 여부를 쉽게 확인할 수 있게 되었다. 따라서 크게 걱정할 것이 없다.

 

먼저 src/main/java 아래의 web 패키지에 dto 패키지를 추가한다.

앞으로 모든 응답 Dto는 이 패키지에 추가하도록 한다. 이 패키지에 HelloResponseDto 클라스를 만들어준다.

 

위처럼 추가하지 않으면 의도치 않은 곳에 패키지가 생성될 수 있다.

 

좌측의 디렉토리를 참고한 후 코드를 위처럼 작성하자.

 

위 코드에선 처음 보는 어노테이션 두개가 추가되었다. 모두 롬복에 포함되어 있다.

주석으로 적어 두었듯, @Getter는 선언된 모든 필드의 getter를 생성해 주고, @RequiredArgsConstructor는 final이 포함된 모든 필드의 생성자를 만들어 준다.

 

이 Dto에 적용된 롬복이 잘 작동하는지 간단한 테스트 코드를 작성해 보자.

 

src/test/java 아래에 유사하게 dto 패키지를 만들고, HelloResponseDtoTest 라는 클라스를 만들자.

 

HelloResponseDtoTest의 코드 내용

코드는 위처럼 작성한다. 구체적인 내용은 주석에 포함시켰다.

 

이 메소드를 실행해 보자.

 

롬복 기능 테스트 결과창

정상적으로 작동하는 것을 확인할 수 있다.

즉, 롬복의 @Getter가 get 메소드를, @RequiredArgsConstructor가 생성자를 자동으로 만들어주는 것을 확인했다.

 

이를 앞서 작성한 HelloController에 적용시켜 보겠다.

 

22번째 줄부터가 새로운 코드다.

@RequestParam을 입력하고 opt (alt) + enter를 누르면, 상단에 자동으로 필요한 패키지를 import 한다.

 

다음으로, 추가된 API를 테스트하는 코드를 HelloControllerTest에 추가해 준다.

 

47번째 줄부터 새로운 코드다.

param은 API 테스트할 때 사용될 요청 파라미터를 설정한다. 값은 String만 허용되어, 숫자 등의 데이터도 문자열로 바꾸어야 한다.

jsonPath는 JSON 응답값을 필드별로 검증할 수 있는 메소드다. $를 기준으로 필드명을 명시한다.

 

추가된 API를 실행해 보자.

 

실행 결과

JSON이 리턴되는 API 역시 정상적으로 테스트를 통과했다.

 

 

*이 글은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' (프리렉, 이동욱 저)를 공부하며 내용을 정리한 글입니다.

댓글