lombok
lombok이란
lombok은 자바 개발할 때 자주 사용하는 코드 Getter, Setter, 기본 생성자, toString등을 어노테이션으로 자동 생성해준다.
이클립스의 경우 lombok설치가 번거롭지만, 인텔리제이에서는 플러그인 덕분에 쉽게 설정이 가능하다.
먼저 build.gradle에 다음 코드를 추가하여 프로젝트에 lombok을 추가한다.
다음과 같이 build.gradle에 등록한 후 , Refresh로 라이브러리를 내려받는다.
그 후 crtl + shift + a 단축키로 플러그인 Aciton을 검색하여 선택하고 lombok을 검색하여 다운받는다.
그 다음 기존 코드를 롬복으로 변경한다. 테스트 코드로 기존 코드를 지킬 수 있기 때문에 기존 코드를 변경하지 않고 테스트 할 수 있다.
package com.jojoldu.book.spring.web.Dto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
위 Dto코드를 보면 처음 보는 어노테이션 2개가 추가되었다.
@Getter는 선언된 모든 필드의 get메소드를 생성해준다.
@RequiredArgsConstructor는 선언된 모든 final필드가 포함된 생성자를 생성해준다.
이제 Dto에 적용된 롬복이 잘 작동하는지 간단한 테스트 코드를 작성한다.
package com.jojoldu.book.spring.web.dto;
import com.jojoldu.book.spring.web.Dto.HelloResponseDto;
import org.junit.Test;
import static org.assertj.core.api.Assertions.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: assertj라는 테스트 검증 라이브러리의 검증 메소드, 검증하고 싶은 대상을 메소드 인자로 받음
assertThat(dto.getAmount()).isEqualTo(amount);
//isEqualTo: assertj의 동등 비교 메소드, assertThat에 있는 값과 isEqualTo의 값을 비교해서 같을때만 성공
}
}
assertThat은 assertj라는 테스트 검증 라이브러리의 검증 메소드이다.
메소드 체이닝이 지원되어 isEqualTo와 같이 메소드를 이어서 사용할 수 있다.
isEqualTo는 assertj의 동등 비교 메소드이며 assertThat에 있는 값과 isEqualTo의 값을 비교해서 같을 떄만 성공이다.
Junit의 기본 assertThat이 아닌 assertj의 assertThat을 사용한 이유는 다음과 같다.
-
- Junit의 assertThat을 쓰게 되면 is()와 같이 CoreMatchers라이브러리가 필요하기 때문에 추가적인 라이브러리 필요하지 않다.
-
- IDE에서는 CoreMatchers와 같은 Matcher라이브러리의 자동완성이 지원이 약하기 때문이다.
이제 테스트 하면 정상적으로 기능이 수행된다!!