Spring Boot #1 eatgo

ims·2020년 9월 5일

Spring Boot 시작하기 !

목록 보기
13/14

폴더

실제 개발을 할 때는 다중 프로젝트로 진행을 하는 경우가 많다. 최상위 폴더 하위에 eatgo-api 라는 폴더를 생성하고 src폴더와 build.gradle을 안으로 옮겨준다.

이 때, setting.gradle에 include로 명시를 해줘야 인식이 가능하다.

application을 실행한 뒤, code를 바꾼 후에 다시 application을 킬 필요없이 test application을 실행하면 적용이 된다.

TDD ( Test Driven Development )

테스트 주도 개발. ( = 목표 주도 개발 ) , 사용자 중심 개발 , 인터페이스 중심 개발

Test 코드를 가장 먼저 작성한다.

Red -> Green -> Refactoring 순으로 동작한다.
(안됨 -> 됨 -> 리팩토링)

실습 : Restaurant class 생성

Junit 5에서는 assertThat -> assertEquals로 바뀌었다.

https://javacan.tistory.com/entry/JUnit-5-Intro

test code에서 error가 뜨게 해봤다.

자세하게 뜨는 것을 볼 수 있다.

Test

import

Restaurant.java

public class Restaurant {
    private String name = "임얼쑤";
    private String status = "good";
    public Restaurant(String name, String status) {
        this.name=name;
        this.status=status;
    }

    public String getName(){
        return name;
    }
}

RestaurantController.java

@RestController
public class RestaurantController {

    @GetMapping("/restaurants")
    public List<Restaurant> list(){
        List<Restaurant> restaurants = new ArrayList<>();

        Restaurant restaurant = new Restaurant("ersu","good");

        restaurants.add(restaurant);
        return restaurants;
    }
}

RestaurantControllerTest.java

@ExtendWith(SpringExtension.class)
@WebMvcTest(RestaurantController.class)
class RestaurantControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void list() throws Exception {
        mvc.perform(get("/restaurants"))
                .andExpect(status().isOk())
                .andExpect(content().string(containsString("\"name\":\"ersu\"")));
    }
}

Junit 5에서는 @Runwith -> @ExtendWith로 바뀌었다. @WebMvcTest를 통해 실행해볼 controller를 mapping 할 수 있다. 위의 코드는 RestaurantController가 return 하는 값이 Json 형태의 return 값을 갖고 있는 지 test해본다.

profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글