SpringBoot/AWS

스프링 부트에서 작성하는 테스트 코드

2023. 3. 14. 22:18
목차
  1. 테스트를 위한 Controller 생성

생성

package com.ewok.study.springbook;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// @SpringBootApplication 스프링부트의 자동설정, 스프링 Bean 읽기와 생성을 모두 자동으로 설정
@SpringBootApplication // @SpringBootApplication이 있는 위치부터 설정을 읽기 때문에 항상 프로젝트의 최상단에 위치 해야함
public class Application {  // 프로젝트의 메인 클래스
    public static void main(String[] args) {
        // 내장 WAS를 실행
        SpringApplication.run(Application.class, args);
    }
}

스프링부트에서는 내장 WAS를 사용하는 것을 권장한다. 왜냐하면 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있기 때문이다.

 

 

테스트를 위한 Controller 생성

생성

컨트롤러와 관련된 클래스들을 모두 담을 것이다.

package com.ewok.study.springbook.web;

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

@RestController //JSON을 반환하는 컨트롤러로 만듦
public class HomeController {

    @GetMapping("/hello")   // Get의 요청을 받을 수 있는 API를 만들어줌
    public String hello() {
        return "hello";
    }
}

 

생성

package com.ewok.study.springboot.web;

import org.junit.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
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;

@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = HomeController.class)
public class HomeControllerTest {

    @Autowired
    private MockMvc mvc;

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

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }
}
@ExtendWith(SpringExtension.class)
  • JUnit에 내장된 실행자 외에 다른 실행자를 실행
  • 여기서는 SpringExtension이라는 스프링 실행자를 사용
  • 스프링 부트 테스트와 JUnit 사이에 연결자 역할

 

@WebMvcTest(controllers = HomeController.class)
  • 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션
  • 선언할 경우 @ Controller, @ControllerAdvice 등을 사용할 수 있음
  • @Service, @Component, @Repository 등은 사용할 수 없음
  • 여기서는 컨트롤러만 사용하기 때문에 선언함

 

@Autowired
  • 스프링이 관리하는 빈(Bean)을 주입받는다.

 

private MockMvc mvc;
  • 웹 API를 테스트할 때 사용한다.
  • 스프링 MVC 테스트의 시작점
  • 이 클래스를 통해 HTTP GET, POST 등에 대한 API 테스트를 할 수 있다.

 

mvc.perform(get("/hello"))
  • MockMvc를 통해 /hello 주소로 HTTP GET 요청을 한다.
  • 체이닝이 지원되어 아래와 같은 여러 검증 기능을 이어서 선언할 수 있다.

 

.andExpect(status().isOk())
  • mvc.perform의 결과를 검증한다.
  • HTTP Header의 Status를 검증한다.
  • 200, 400, 500 등의 상태를 검증한다.
  • 여기서는 OK 즉, 200인지 아닌지를 검증한다.

 

.andExpect(content().string(hello));
  • mvc.perform의 결과를 검증
  • 응답 본문의 내용을 검증
  • Controller에서 "hello"를 리턴하기 때문에 이 값이 맞는지 검증

 

실행
통과

 

이제 수동으로 한번 실행해서 정상적으로 값이 출력되는지 확인해 보자

 

Application.java

테스트 코드로 먼저 검증 후, 정말 못 믿겠다고 생각되면 프로젝트를 실행해 확인한다.

 

 

이후 과정은 

https://github.com/hong-sing/springboot-webservice/wiki

 

Home

스프링 부트와 AWS로 혼자 구현하는 웹 서비스. Contribute to hong-sing/springboot-webservice development by creating an account on GitHub.

github.com

위키에다 메모를 해놓았다.

'SpringBoot > AWS' 카테고리의 다른 글

무중단 배포를 진행하며 겪은 에러  (0) 2023.03.19
무중단 배포  (0) 2023.03.19
CodeDeploy 로그 확인  (0) 2023.03.18
Github Actions 배포 자동화  (0) 2023.03.18
스프링 부트 시작하기  (0) 2023.03.14
  1. 테스트를 위한 Controller 생성
'SpringBoot/AWS' 카테고리의 다른 글
  • 무중단 배포
  • CodeDeploy 로그 확인
  • Github Actions 배포 자동화
  • 스프링 부트 시작하기
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 생성자
  • branch
  • 노랭이
  • sqld 합격
  • base
  • this
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • GIT
  • SQLD
  • sqld 자격증
  • merge commit
  • 브랜치
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • 버전 관리
  • git bash

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
스프링 부트에서 작성하는 테스트 코드
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.