본문 바로가기

Programming/Spring

[Spring Boot] IntelliJ에서 lombok 사용하고 테스트 해보기

반응형

개발환경

  • IntelliJ
  • Java8(JDK 1.8)
  • Spring Boot 2.4.1
  • Gradle 7.1

build.gradle의 dependencies에 lombok 어노테이션 추가

compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20'

 

IntelliJ 버전 2020.03 버전 이하 환경에서 lombok 사용 시 어노테이션 추가 + lombok 플러그인 설치 이렇게 두 가지 작업을 해야 한다. 2020.03 버전 이하 환경에서 작업한다면 아래 이미지를 보고 lombok 플러드인을 설치하자.


DTO 클래스 생성

HelloControllerDto.java

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class HelloResponseDto {

    private final String name;
    private final int amount;
}
@Getter - 선언된 모든 필드의 get 메소드를 생성한다.
@RequiredArgsConstructor - final이나 @NonNull인 필드가 포함된 생성자를 생성한다.
- final이 없는 필드는 생성자에 포함하지 않는다.

DTO 테스트 클래스 생성

build.gradle의 dependencies에 assertj 어노테이션 추가

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

- 메소드 체이닝을 지원하기 때문에 좀 더 깔끔하고 읽기 쉬운 테스트 코드 작성이 가능하다.

- 다양한 테스트 메소드를 제공하기 때문에 거의 모든 종류의 테스트를 수행할 수 있다.

testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.20.2'

 

HelloControllerTest.java

import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;

class HelloResponseDtoTest {

    @Test
    public void 롬복_기능_테스트(){

        String name = "test";
        int amount = 1000;

        HelloResponseDto dto = new HelloResponseDto(name, amount);

        assertThat(dto.getName()).isEqualTo(name);
        assertThat(dto.getAmount()).isEqualTo(amount);

    }

}

@assertThat

  • 모든 테스트 코드는 assertThat() 메소드에서 출발한다.
  • 검증하고 싶은 대상을 메소드 인자로 받는다.
  • assertThat(테스트 타켓).메소드1().메소드2().메소드3() 와 같은 구조로 다양한 메소드를 연쇄 호출 하면서 코드를 작성 할 수 있다.

테스트 메소드 실행

Test passed의 의미

  • lombok의 @Getter로 get 메소드가 생성되었다.
  • lombok의 @RequiredArgsConstructor로 생성자가 자동으로 생성되었다.

참고

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=218568947 

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스

스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 시큐리티를 활용한 소셜 로그인 등으로 애플리케이션을 개발하고, 뒤이어 AWS 인프라의 기본 사용법과

www.aladin.co.kr

https://assertj.github.io/doc/

 

AssertJ - fluent assertions java library

Thanks to all the contributors of this release: Erhard Pointl, Stefano Cordio, Pascal Schumacher, BJ Hargrave, Raymond Augé, Thomas Weißschuh, Maciej Wajcht, Hayden Meloche, Filip Hrisafov, Jayati Goyal, Gyumin Kim, Clemens Grabmann, Roman Leventov, Fr J

assertj.github.io

https://www.daleseo.com/assertj/

 

AssertJ 소개

Engineering Blog by Dale Seo

www.daleseo.com

 

반응형