기본 콘텐츠로 건너뛰기

[SpringBoot] 테스트를 해보자

스프링 부트 테스트
 자바 웹개발(양파껍질) 스터디를 하면서 리팩토링과 테스트코드에 중요함을 점점 느끼고 있다.
스프링 부트에서 간단하게 프로젝트 테스트를 진행해 볼 수 있는데 한번 알아도록 하자.

1. Controller 테스트를 해보자
  - 프로젝트 폴더를 보면 'src/test/java'에서 파일을 생성해 진행하자.('src/main/java가 아님!)
  - 최근 스프링 부트 테스트를 세분화해 @DataJpaTest, @JsonTest등 다양한것이 나왔다.
  - 테스트 클래스에 @WebMvcTest어노테이션을 추가해 특정 컨트롤러를 지정해주자.
  - @WebMvc = @Controller + @Component + @ContollerAdvice +... 등을 인식.
  - 컨트롤러를 테스트 하려면 MockMvc 타입 객체를 사용해야 하는데, @WebMvc붙여 주면 별도 생성없이 주입 된다.
package com.example.sutdy;

import com.example.sutdy.controller.VoController;
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.status;

@RunWith(SpringRunner.class)
@WebMvcTest(VoController.class)
public class SampleControllerTest {
    @Autowired
    MockMvc mock;

    @Test
    public void test() throws Exception {
        mock.perform(get("/hello")).andExpect(status().isOk());
    }
}

  - 테스트할 메서드에 @Test를 붙이면 되고 이를 실행하면 테스트가 실행된다.
  - 정상적으로 실행되면 초록색 불이 뜰 것이고 아니면 빨간색 불이 뜰 것이다.

  - 그냥 스프링에선 테스트 환경 준비가 번거로운데, 스프링부트는 설정이 모두 자동이라 아주편하다

여기까지 테스트 방법을 알아 보았다.

그럼 끝~!!



댓글

이 블로그의 인기 게시물

[스프링부트2.0 낚시게시판] 01. 프로젝트 생성 및 환경을 세팅해 보자

첫번째. 이클립스에서 프로젝트를 생성해 보자. 빠밤! 1. 이클립스 실행하고 프로젝트 생성하기  - 이클립스 실행 후 File -> New -> Spring Starter Project클릭 ( 부트는 Spring Starter Project로!! )        해당 프로젝트 설정을 본인의 입맛에 맞게? 해주자. 처음엔 저와 똑같이 하는게 삽질(?)의 노고를 덜 수 있으니 저 같은 초보 개발자 분들이나 이제 막 공부를 시작 하셧다면 위와 가이 설정 하는걸 추천.  - New Spring Starter Project Dependencies    - Spring Boot Version : 2.0.2    - Core : DevTools, Security, Lombok 클릭    - Web : web  클릭    - SQL : JPA, H2 클릭    - template Engines : Mstache   --> 타임리프(요즘 회사에서 많이 쓴다고해서)   - 그다음 다음 -> Finish 클릭하게 되면 Maven에 관한 프로젝트가 생성된다.   처음엔 메이븐 디펜던시부분을 받느라 시간이 걸릴수 있다. 프로젝트 구조는 스프링과 별반 차이가 없어 보인다 프로젝트 구조 관련해선 조만간 포스팅 해봐야 겠다. (요즘 책 읽을 시간도 없어서...😂) 두번째. 실행을 해보자.  스프링 부트2.0의 특징은 자체적으로 톰켓이 내장 되어 있어 따로 톰켓을 설정하는 부분이 없어서 아주 매우 편안하게 되었다.    - 실행은 src/main/java 밑에 com.fishing.board 패키지 밑에 FishBoardApplication.java 오른쪽 클릭 후...

[SpringBoot] Spring Data JPA를 알아보자 [2탄 엔티티를 다루기]

이번 시간에는 엔티티 클래스 설계서 부터 테스트까지 진행해 보도록 하겠다. 1. 엔티티 클래스 설계   - JPA는 자동으로 테이블을 생성하는 기능을 가질 수 있다. 다음 2가지 방법이 있다.     1) SQL을 이용해 테이블을 먼저 생성하고 엔티티 클래스를 만드는 방법     2) JPA를 이용해 클래스만 설계하고 자동으로 테이블을 생성하는 방법   - 이중에서 2)번 방법을 알아보자.   - JPA 엔티티 클래스를 생성하는 작업은 다음 과정을 거친다     1) 클래스 설계     2) 각종 애너테이션을 이용해 제약 조건 추가 설정     3) 엔티티 간 연관관계 설정 1.1 엔티티 클래스 설계    package com . example . sutdy . domain ; import lombok.Getter ; import lombok.Setter ; import lombok.ToString ; import java.sql.Timestamp ; @Getter @Setter @ToString public class Board { private Long bno; private String title; private String writer; private String content; private Timestamp regdate; private Timestamp updatedate; }   - 위와 같이 일반적인 방법으로 클래스를 만들어 봤다. 다음 JPA 어노테이션에 관해 알아보고 붙여보자 1.1.2 JPA 어노테이션   - @Id : 각 엔티티를 구별할수 있도록 식별 ID부과.(일종의 primary key로 보면된다). 모든 엔티티에 반드시 지정하자.   - @Column : 인스턴스 ...

[Java] JVM에 대해 알아보자

이번 시간엔는 JVM에 대해 전반적으로 알아보려 한다. 자바 코드를 작성하는 일에 JVM이 뭐 구지 중요한가 의심이 가지만, 성능 튜닝이나 더 아름다운 코드를 작성하기 위해 어느 정도 이해가 필요한것 같다. JVM을 알아보면서 추가적으로 필요한 개념을 더 설명하려한다. 자 그럼 시작 해보자. <JVM 그림> <Runtime Data Access> JVM - 자바의 특징 중 Write once, run everywhere가 있다. JVM이 OS와 프로그램의 매개체 역할을 하고, 애플리케이션은 JVM 위에서 동작하도록 설계 되었다. - 작성된 자바프로그램의 바이트 코드를 실행할 수 있는 주체이다. - 스택기반의 가상머신이다. - 가비지 컬렉션을 실행한다. (가비지컬렉터 이용) - Java 애플리케이션은 플랫폼에 독립적이다. 하지만 JVM은 플랫폼에 종속적이다. 각 플랫폼(OS)마다 다르게 구현되어야 한다. JVM 구조 JVM의 내부 구조를 큰 형태로 보면 클래스 로더 서브시스템, 런타임 데이터 영역 (Runtime Data Area) 그리고 실행엔진(Execution Engine)으로 나눌 수 있다. Class Loader : JVM 내로 class를 로드하고 Link를 통해 적절히 배치하는 일련의 작업을 수행하는 모듈. Runtime시 동적으로 수행된다. 클래스를 분석하는 과정에서 리플렉션 기법을 사용해 컴파일 된 클래스의 내부를 분석한다. Execution Engine : class loader를 통해 JVM 내의 런타임 데이터 영역에 배치된 바이트 코드는 실행 엔진에 의해 실행된다. 실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어 실행한다. Garbage Collector : 가비지 컬렉터를 통해 자동화된 메모리 관리 기능을 제공한다. Garbage Collector는 Garbage Collection을 수행하는 모듈 쓰레드를 말한다....