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

이 때, setting.gradle에 include로 명시를 해줘야 인식이 가능하다.
application을 실행한 뒤, code를 바꾼 후에 다시 application을 킬 필요없이 test application을 실행하면 적용이 된다.
테스트 주도 개발. ( = 목표 주도 개발 ) , 사용자 중심 개발 , 인터페이스 중심 개발
Test 코드를 가장 먼저 작성한다.
Red -> Green -> Refactoring 순으로 동작한다.
(안됨 -> 됨 -> 리팩토링)




Junit 5에서는 assertThat -> assertEquals로 바뀌었다.
test code에서 error가 뜨게 해봤다.

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



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;
}
}
@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;
}
}
@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해본다.