티스토리 뷰

반응형
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); // 내장 WAS를 실행
    }
}

@SpringBootApplication

  • @SpringBootApplication이 있는 위치부터 설정을 읽기 때문에 프로젝트의 최상단에 위치하는 클래스
  • 스프링부트가 자동 설정됨

 

SpringApplication.run

  • 내장 WAS를 실행
  • 서버에 톰캣을 설치할 필요가 없고, 스프링 부트로 만들어진 Ja 파일로 실행
💡스프링 부트에서 내장 WAS를 사용하는 것을 권장하는 이유

⇒ 언제 어디서가 같은 환경에서 스프링 부트를 배포할 수 있다

 

Controller

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello";
    }
}

ㄴ '/hello' 요청이 오면 문자열 hello를 반환하는 기능

@RestController

  • 컨트롤러를 JSON을 반환하는 컨트롤러로 만듦

 

@GetMapping

  • HTTP Method의 Get 요청을 받을 수 있는 API를 만듦

 

Test

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
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;


@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    public void hello가_리턴된다() throws Exception {
        String hello = "hello";

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }
}

@RunWith(SpringRunner.class)

  • 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행
  • 위의 코드에서는 SpringRunner라는 스프링 실행자를 사용
  • 스프링 부트 테스트와 JUnit 사이에 연결자 역할

@WebMvcTest

  • Web(Spring MVC)에 집중할 수 있는 어노테이션
  • 사용 가능: @Controller, @ControllerAdvice 등
  • 사용 불가능: @Service, @Component, @Repository 등

@Autowired

  • Bean을 주입 받음

private MockMvc mvc

  • 웹 API를 테스트할 때 사용
  • 스프링 MVC 테스트의 시작점
  • HTTP GET, POST 등에 대한 API를 테스트

mvc.perform(get("/hello"))

  • /hello 주소로 HTTP GET 요청
  • 체이닝을 지원하여 여러 검증 기능을 이어서 선언할 수 잇음

.andExpect(status().isOk())

  • mvc.perform의 결과를 검증
  • HTTP Header의 Status rjawmd
  • 200, 404, 500 등의 상태 검증
  • OK(200)인지 아닌지 검증

.andExpect(content().string(hello));

  • mvc.perfrom의 결과를 검증
  • 응답 본문의 내용 검증

테스트가 통과되었다.

 

port 8080(http)로 실행되는 것을 알 수 있다.

 

localhost:8080/hello에 접속하면 Hello가 출력되는 것을 볼 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함