Coding Note

Lombok 설치하기 본문

SpringBoot/AWS_PJ

Lombok 설치하기

jinnkim 2022. 3. 1. 01:05

 

Q1. Lombok이란?

- 자바 개발자들의 필수 라이브러리

- 자바 개발시 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString 등을 어노테이션으로 자동 생성해줌.

 

활용해봅시다.

 


 

1. build.gradle에 등록하기

 

의존성에 lombok을 등록하고 새로고침하여 라이브러리에 내려받는다(의존성 주입)

 

 

 

2. lombok 설치하기

 

plugins에서 설치 받으면 된다.

 

 

설치하고 인테리제이 재시작하면 아래 설정 팝업창이 뜨니 눌러주면 된다.

안 뜨는 사람들은 [Setting - build, Exclusion~ - Annotation Processors] 에서 설정하면 된다!

 

 

 

lombok 설정까지 완료했으니 사용해보자!!

 

 

 

3. 기존 코드 롬복으로 전환하기 (Hello Controller)

기존 게시물 파일을 롬북으로 전환해 볼게요.

 

 

위 사진처럼 HelloResponseDto, HelloResponseDtoTest 클래스 파일을 생성한다.

 

 

 

HelloResponseDto

package dto;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
//모든 필드의 get 메소드를 생성
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
    private final String name;
    private final int amount;
}

 

@RequiredArgsConstructor

- 선언된 모든 final 필드가 포함된 생성자를 생성

- final이 없는 필드는 생성자에 포함되지 않음

 

 

 

 

HelloResponseDtoTest 

package com.bs.book.springboot.dto;

import dto.HelloResponseDto;
import org.junit.Test;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;


public class HelloResponseDtoTest {

    @Test
    public void 롬복_기능_테스트() {
        //given
        String name = "test";
        int amount = 1000;

        //when
        HelloResponseDto dto = new HelloResponseDto(name, amount);
        //then
        assertThat(dto.getName()).isEqualTo(name);
        assertThat(dto.getAmount()).isEqualTo(amount);
    }
}

 

assertThat

- assertj라는 테스트 검증 라이브러리의 검증 메소드

- 검증하고 싶은 대상을 메소드 인자로 받음

- 메소드 체이닝이 지원되워 isEqualTo와 같이 메소드를 이어서 사용 가능

 

isEqualTo

- assetj의 동등 비교 메소드

- assertTha에 있는 값과 isEqualTo의 값을 비교해서 같을 때만 성공임

 

 

Q2. Junit VS  assertj(차이점)

Junit  assertj
- 단위 테스트 라이브러리 - 테스트 코드의 가독성과 편의성을 높여주는 라이브러리
- 자바 8이상, assertj 3버전 이상 사용해야 함
- CoreMatchers와 달리 추가적인 라이브러리 불필요
- 자동완성이 확실하게 지원됨

 테스트 결과 >

 

 

 

HelloController

HelloController 클래스 안에 아래 코드 추가하기

//HelloController 코드를 롬복으로 전환
    @GetMapping("/hello/dto")
    public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("amount") int amount) {
        return new HelloResponseDto(name, amount);
    }

 

 

 

HelloControllerTest

HelloControllerTest 클래스안에 아래 코드 추가하기

@Test
    public void helloDto가_리턴된다() throws Exception {
        String name = "hello";
        int amount =1000;

        mvc.perform(
                get("/hello/dto")
                        .param("name", name)
                        .param("amount", String.valueOf(amount)))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.name", is(name)))
                .andExpect(jsonPath("$.amount", is(amount)));
    }

 

param

- 값은 String만 허용됨

- 정수는 문자열로 변경해서 사용해야 함.(. valueOf())

jsonPath

- json 응답 값을 필드별로 검증할 수 있는 메소드

- $를 기준으로 필드명 명시

 

 

 

 테스트 결과 >

 

 

 

오류 해결 >

오류 원인 - java:incompatible types:

 

import 잘 못 되어있었다.

import 수정하니 됐다!

 

완료!!

Comments