[JUnit] 테스트 기본 - 1

2020. 2. 13. 22:01·IT/Spring

개발에 있어서 테스트 코드는 중요하다.
테스트 중에서 단위 테스트는 기능 단위의 테스트 코드를 작성한다.

필자는 첫 회사인 씨xx에 입사를 했을 때 테스트 코드가 뭔지도 몰랐고, 회사에 있는 선임은 테스트 코드가 아닌 개발 방식을 사용해왔기에 실무에서는 코드를 짜고 바로 배포하고 화면에서 눈으로 확인하는 것인 줄 알았다.
그래서 개발을 할 때면

  1. 백단 코드 작성
  2. war로 묶어서 export
  3. war을 서버에 설치되어있는 톰캣 서버로 파일 질라를 통해서 이동
  4. 톰캣 Stop, Start
  5. 인터넷 익스플로러를 켜서 화면에서 백단 코드와 연관되어있는 버튼 클릭
  6. 성공 또는 실패
  7. 실패시 1~5번 반복

이런 식으로 개발을 했었다.

그러다가 두 번째 회사로 이직을 하면서 TDD을 배우면서 테스트 코드가 뭔지 알게 되었고, 어떤 식으로 테스트 코드를 써서 나가는지 알게 되었다.

그럼 이제 테스트 코드는 어떤 식으로 해나가는지 차근차근 알아보도록 하자.

  1. 아래와 같이 소스 코드를 먼저 작성한다.

HelloController.java

package com.incheol.app.web;

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";
    }

}
  1. 테스트 패키지로 가서 테스트 코드를 작성한다.

HelloControllerTest.java

package com.incheol.app.web;

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.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;


@RunWith(SpringRunner.class) 
@WebMvcTest // Web(Spring MVC)에 집중할 수 있는 어노테이션
public class HelloControllerTest {

    @Autowired
    private MockMvc mvc; //웹 API을 테스트 할때 사용하는 가짜 데이터 , GET, POST 등에 대한 테스트를 할 수 있음.


    @Test
    public void returnHello() throws Exception {
        String hello = "hello";

        //테스트를 하는 행위(perform) => 하나씩 기대 값을 넣고 테스트를 한다. 
        mvc.perform(get("/hello")) // Get에 대한 주소를 가져오는 행위를 한다.
        .andExpect(status().isOk()) // 상태가 200 값을 기대하며 기대 값과 결과가 같다면 테스트는 다음으로 넘어간다.
        .andExpect(content().string(hello)); // hello의 값을 기대하며 기대 값과 결과가 같다면 모든 테스트를 통과한다. 
    }

}

  1. JUnit을 실행하고 모든 테스트가 무사히 통과 되면 화면 왼쪽에 테스트가 통과했다는 초록색 바가 뜬다.

4. 테스트 코드까지 작성 했으니, 실제로 웹 화면에서 'hello' 가 뜨는지 확인해보자.

이렇게 항상 코드 작성 후 에는 테스트 코드가 중요하다.

앞으로 필자와 함께 테스트 코드에 대해서 하나 하나 알아가 보도록 하자.

테스트 코드가 습관화가 되도록 노력해보자.

'IT > Spring' 카테고리의 다른 글

[SpringBoot] 파일 다운로드  (0) 2020.07.02
[JPA] JPA Auditing  (0) 2020.02.16
[JUnit] 테스트 기본 - 2  (0) 2020.02.13
[JPA] 트랜잭션과 락  (0) 2020.02.12
[STS4] Mac 단축키 변경 (자동완성)  (0) 2020.02.11
'IT/Spring' 카테고리의 다른 글
  • [JPA] JPA Auditing
  • [JUnit] 테스트 기본 - 2
  • [JPA] 트랜잭션과 락
  • [STS4] Mac 단축키 변경 (자동완성)
infe91
infe91
  • infe91
    돌고 돌아 다시 여기로
    infe91
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (24)
        • Infra (15)
        • DB (0)
        • Spring (7)
        • Microservice (1)
        • IDE (1)
      • 공유 (1)
      • 일상 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      위버하임
      7개월뒤
      S3 #MinIO #미니오 #설치 #맥 #MinIO Browser
      협동조합형
      SpringBoot #file #파일 #다운로드 #파일 다운로드
      Centos7 #RabbitMQ #Managment UI
      war #톰캣 #스프링부트 #Tomcat
      centos7 #systemd #minio
      mac #rabbitmq
      cluster #RabbitMQ #disc #ram #cluster node type
      모요
      Vagrant #Multi VM #Cpus #Memory #베그란트
      비싼요금제
      펜타아너스
      젠킨스 #centos7 #허드슨 #Jenkins
      미니오 #미니오 설치 #도커 #Docker #Minio #Minio docker
      헤센시티
      kg모바일
      몽고 DB #도커 #도커 이미지 #도커 컨테이너
      queryDSL #Spring Boot
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    infe91
    [JUnit] 테스트 기본 - 1
    상단으로

    티스토리툴바