[E-2-3] HelloController 롬복으로 전환

2020. 1. 30. 14:46Project E/Project E 파트1

반응형

src/main/java

com.minokuma.book.springboot.web.dto

HelloResponseDto.java

 

더보기
package com.minokuma.book.springboot.web.dto;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public class HelloResponseDto {

    private final String name;
    private final int amount;
}


테스트 코드 작성

 

src/test/java

com.minokuma.book.springboot.web.dto

HelloResponseDtoTest.java

 

더보기
package com.minokuma.book.springboot.web.dto;

import org.junit.Test;

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

public class HelloResponseDtoTest {

    @Test
    public void lombokTest(){

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

        //when
        HelloResponseDto dto = new HelloResponseDto(name, amount);

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

 

테스트 코드 실행

 

에러 발생

 

에러 발생 시 그레이들 버전이 4.x 가 아닌 경우이다.

 

버전 다운그레이드 실시가 필요하다.

 


그레이들 다운그레이드

 

인텔리제이 하단 부분의 터미널 > gradlew wrapper --gradle-version 4.10.2 입력

 

 

테스트 코드 재실행

 


src/main/java

com.minokumabook.springboot.web

HelloController.java

 

더보기
package com.minokuma.book.springboot.web;

import com.minokuma.book.springboot.web.dto.HelloResponseDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }

    public HelloResponseDto helloDto(@RequestParam("name") String name, @RequestParam("amount") int amount){
        return new HelloResponseDto(name, amount);
    }
}

 

 


테스트 코드 수정 및 실행

 

src/test/java

com.minokuma.book.springboot.web

HelloControllerTest.java

 

더보기
package com.minokuma.book.springboot;

import com.minokuma.book.springboot.web.HelloController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void returnHello() throws Exception {
        String hello = "hello";

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }

    @Test
    public void returnHelloDto() 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)));
    }
}

반응형

'Project E > Project E 파트1' 카테고리의 다른 글

[E-2-2] 롬복 설치하기  (0) 2020.01.30
[E-2-1] 스프링 부트에서 테스트 코드 작성  (0) 2020.01.30