본문 바로가기
Java

[Spring-Boot] JUnit Test 추가하기

by bryan.oh 2021. 6. 19.
반응형

기존 샘플 소스에 이어서 하겠습니다.

기존에 샘플로 추가하지 않았다면 아래 링크 참고하시고요~

2021.06.07 - [Java] - [Spring-Boot] RESTApi 만들어보기 hello-world (이클립스)

 

src/test/java 아래에 package 아래에 class 를 생성합니다.

Naming 규칙은 테스트 하려는 Controller 뒤에 Test 를 붙히는게 좋겠네요.

 

 

package com.bryan.hello;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

@RunWith(SpringRunner.class)
@SpringBootTest 
@AutoConfigureMockMvc
public class HelloControllerTest {
	@Autowired(required = true)
	private MockMvc mvc;
	
	@Test
	void contextLoads() throws Exception {
		String shouldReturn = "hi there~";
		
		mvc.perform(get("/hello"))
		.andExpect(status().isOk())
		.andExpect(content().string(shouldReturn));
	}
}

 

  • @RunWith
    JUnit에 내장된 실행자 외에 다른 실행자를 실행시키는데, 여기선 SpringRunner 실행자를 사용한다. 즉, 스프링 부터 테스트와 JUnit 사이에 연결자 역할을 한다.
  • @WebMvcTest
    여러 스프링 테스트 어노테이션 중, Web에 집중할 수 있는 어노테이션이다.
    이를 호출할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있다.
  • @Autowired
    스프링이 관리하는 빈을 주입받는다.
  • private MockMvc mvc
    웹API를 테스트할 때 사용한다. 이 클래스를 통해 HTTP GET, POST등에 대한 API 테스트를 할 수 있다.
  • mvc.perform(get("/hello"))
    MockMvc를 통해 /hello 주소로 HTTP GET 요청을 한다.
  • andExpect(status().isOk())
    mvc.perform의 결과를 검증한다.
    isOk()는 status가 200인지 아닌지를 검증한다.
  • andExpect(content().string(hello))
    응답 본분의 내용을 검증한다.
    Controller에서 "hello"를 정상적으로 리턴하는지 검증한다.

 

실행

 

 

JUnit test 결과

728x90
반응형

댓글