스프링부트에서 테스트코드 작성하기 (2)

박의진·2023년 6월 21일
0

스프링부트

목록 보기
3/7
post-custom-banner

롬복 설치

1) Gradle 의존성 추가

compile('org.projectlombok:lombok')

2) 롬복 플러그인 설치

3) Enable annotation processing 체크
settings -> Build -> compiler-> annotation processors

HelloController 코드 롬복으로 전환하기

1) HelloResponseDto 생성하기

2) DTO 코드 생성하기

@Getter
@RequiredArgsConstructor //생성자 자동으로 만들어짐
public class HelloResponseDto {

    private final String name;
    private final int amount;

}
  • @Getter

    • 선언된 모든 필드의 get 메소드를 생성
  • @RequiredArgsConstructor

    • 선언된 모든 final 필드가 포함된 생성자를 생성
    • final이 없는 필드는 생성자에 포함되지 않음

3) HelloResponseDtoTest 생성하기

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
    • assertj의 동등 비교 메소드
    • assertThat의 있는값과 isEqualTo의 값을 비교해서 같을때만 성공

테스트 코드 작성 후 실행 성공 화면

롬복을 통해 get 메소와 생성자가 정상적으로 생성되는 것을 확인할 수 있음

4) HelloController에 새로운 API 추가 생성

@GetMapping("/hello/dto")
    public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("amount") int amount){
        return new HelloResponseDto(name, amount);
    }
  • @RequesetParam
    • 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션

5) 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)));
    }
  • parma

    • API 테스트 할 때 사용될 요청 파라미터 설정
    • String 만 허용
    • 숫자/ 날짜 데이터를 문자열로 변환해야 함
  • jsonPath

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

테스트코드 실행 후 성공 화면

profile
주니어 개발자의 개발일지
post-custom-banner

0개의 댓글