2장에서는 그동안 경험해보지 못했던 테스트 코드에 대해 배울 수 있었다.
취업과 이직을 위한 우대조건에 꼭 테스트 코드가 있었는데
지금 회사에서는 경험할 수 없어서 참 아쉬웠던 부분이다.
이렇게라도 공부를 하며 배울 수 있어서 다행이다.
테스트 코드에 대한 개념은 따로 포스팅 해봐야겠다.
패키지를 만들고 application을 만들어 준다.
클래스 코드는 다음과 같이 작성해준다.
package com.ybkim.springstudy.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application { //앞으로 만들 클래스의 메인 클래스
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController //컨트롤러를 json을 반환하는 컨트롤러로 만들어줌
public class HelloController {
@GetMapping("/hello") //get 요청을 받을 수 있는 API를 만들어준다.
public String hello(){
return "hello";
}
}
Hello Controller를 테스트할 수 있는 HelloControllerTest를 만들어준다.
@RunWith(SpringRunner.class) //테스트를 진행할때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킴, 여기서는 SpringRunner라는 스프링 실행자 실행
@WebMvcTest(controllers = HelloController.class) //여러 스프링 어노테이션 중, Web에 집중할 수 있는 어노테이션
public class HelloControllerTest {
@Autowired //스프링티 관리하는 빈을 주입 받는다.
private MockMvc mvc; //웹api를 테스트할 때 사용한다. http method의 get, post등에 대한 api 테스트를 진행할 수 있다.
@Test
public void hello가_리턴된다() throws Exception{
String hello = "hello";
mvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string(hello));
/*
mvc.perform: /hello 주소로 http get 요청을 한다.
.andExpect : mcv.perform의 결과를 검증, 우리가 흔히 알고 있는 200, 400, 500 등의 상태를 검증 여기서는 200인지 아닌지 검증
.andExpect : 결과를 검증, 여기서는 hello를 리턴하기에 이 값이 맞는지 검증
*/
}
}
테스트 실행은 메소드 왼쪽 화살표를 누르면 된다.
테스트 메소드 실행 결과
수동으로 실행해서 잘 작동하는지 확인해보기
Application.java를 실행시키고
브라우저에서 localhost:8080/hello로 접속해보면
다음과 같이 정상적으로 "hello"를 출력하는 것을 확인할 수 있다.