먼저, 다음과 같이 폴더구조를 만들어주고 파일을 만들어줍니다!
1. Application
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);
}
}
@SpringBootApplication - 스프링 부트의 자동 설정, 스프링빈 읽기와 생성을 모두 자동으로 설정됩니다
주의할 점은 @SpringBootApplication이 있는 위치부터 읽어나가기 때문에 이 클래스는 항상 프로젝트의 최상단에 위치해야합니다.
2. HelloController
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello"; //문자열 hello 반환
}
}
@RestController - 컨트롤러를 JSON으로 반환하는 컨트롤러로 만들어줍니다.
@Controller와 @ResponseBody를 합쳐놓은 것으로 @RestController를 사용하면 메소드마다 @ResponseBody를 붙여주지 않아도되는 편리함이 있습니다.
@Controller와 @RestController가 어떻게 다른지는 다음 링크를 참조하세요!
@GetMapping("/hello") - /hello로 요청이 왔을 때 HTTP Method인 Get방식으로 요청을 받을 수 있습니다.
3. HelloControllerTest
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void hello리턴() throws Exception {
String hello = "hello";
mockMvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string(hello));
}
}
@RunWith(SpringRunner.class) - SpringRunner라는 스프링 실행자 사용
@WebMvcTest(controllers = HelloController.class) - MVC를 위한 테스트, 이 예제에서는 컨트롤러만 사용하기 때문에 이것으로 단위테스트합니다. 테스트의 목적에 따라 쓰는 테스트의 종류가 달라집니다
@WebMvcTest에 대한 자세한 내용은 다음 링크를 참조하세요!
@Autowired - 스프링빈을 주입받습니다
private MockMvc mvc; - 스프링MVC테스트의 시작점을 뜻합니다. 테스트 안에서 쓰이는 가짜객체이고, 테스트를 위해 쓰이는 수단입니다
mvc.perform(get("/hello")) - /hello 주소로 HTTP Get을 요청합니다
andExpect(status().isOk()) - HTTP Header의 Status를 검증합니다, isOk로 200인지 아닌지를 검증합니다. 200은 요청이 성공적으로 되었다는 의미입니다.
andExpect(content().string(hello)) - 응답 본문의 내용이 "hello"가 맞는지 검증합니다
4. 실행
Application을 실행했을 때 로컬에서 다음과 같이 나타나면 잘 실행된 것 입니다!
'Back-end > Spring' 카테고리의 다른 글
[SpringBoot] Spring Data JPA로 게시판 만들기(4) - 수정/조회 API (0) | 2020.11.22 |
---|---|
[SpringBoot] Spring Data JPA로 게시판 만들기(3) - 등록 API (0) | 2020.11.16 |
[SpringBoot] Spring Data JPA로 게시판 만들기(2) - repository테스트 코드 작성 (0) | 2020.11.16 |
[SpringBoot] Spring Data JPA로 게시판 만들기(1) - domain, repository 생성 (0) | 2020.11.16 |
[SpringBoot] 롬복(Lombok) 적용하기 (0) | 2020.11.15 |