반응형
개발환경
- 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
https://assertj.github.io/doc/
https://www.daleseo.com/assertj/
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring Boot] @RequiredArgsConstructor 사용 시 final 키워드 사용하지 않아서 에러가 발생한 것 같은데.. (0) | 2021.08.24 |
---|---|
[Spring] @PathVariable, @RequestParam, @RequestBody, @ResponseBody (0) | 2021.08.20 |
[Spring] Spring 웹 계층 (0) | 2021.08.19 |
[Spring Boot] JUnit5로 Controller 테스트 코드 작성하기 (0) | 2021.08.17 |
[Spring] Path with "WEB-INF" or "META-INF" (0) | 2021.08.09 |