[SpringBoot] 테스트 코드 : JUnit

정재현·2024년 1월 22일
0

Spring Boot

목록 보기
9/19
post-thumbnail

버그란

'소스 코드'나 '설계과정에서의 오류' 때문에 발생하는 소프트웨어가 예상하지 못한 결과를 내는 것


개발 코드 배포 전, 버그 테스트 하는 방법

Spring에서는 '테스트 코드' 작성을 잘 할 수 있는 환경을 제공해준다.

블랙박스 테스팅

소프트웨어 내부 구조나 동작원리를 모르는 블랙박스와 같은 상태에서, 즉 웹 서비스의 사용자 입장에서 동작을 검사하는 방법

장점

  • 개발자부터 디자이너, 베타 테스터 등 누구나 테스트가 가능하다

단점

  • 기능이 증가될 수록 테스트의 범위가 증가한다.
  • 테스트 하는 사람에 따라 테스트 퀄리티가 다를 수 있다.

개발자 테스트

개발자가 직접 "본인이 작성한 코드"를 검증하기 위해 "테스트 코드"를 작성하는 방법

장점

  • 예상 동작과 실제 동작의 비교로 빠르고 정확한 테스트가 가능하다
  • 배포 절차시 테스트 코드가 수행되어 동작 검증을 하도록 하는 테스트 자동화가 가능하다
  • 리팩토링이나 기능을 추가할 때 더욱 편리하다

단점

  • 개발 시간이 오래 걸림
  • 테스트 코드를 유지보수하는 비용이 든다

JUnit

자바 프로그래밍 언어 용 단위 테스트 프레임워크

  • build.gradle 파일을 열어보면 JUnit을 사용하기 위한 환경설정이 기본적으로 이미 되어 있다.

테스트 파일 생성하기

  • 테스트할 java 파일의 class에서 우클릭 > "Generate..." 클릭
  • Test.. 클릭
  • 기본세팅 그대로 OK 눌러서 생성
  • Test파일이 생성되었는지 확인

단축키

  • Window : Ctrl + shift + t
  • Mac : + shift + t

테스트 코드 작성

JUnit은 테스트 실행 환경을 가지고 있기 때문에 따로 main() 메서드를 실행하거나 서버를 실행시키지 않아도 각각의 메서드 혹은 기능별로 테스트 코드를 작성하여 실행시킬 수 있다

예시

package com.sparta.springprepare.calculator;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

class CalculatorTest {
    @Test
    @DisplayName("더하기 테스트")
    void test1() {
        Calculator calculator = new Calculator();
        Double result = calculator.operate(8, "+", 2);
        System.out.println("result = " + result);

        Assertions.assertEquals(10, result);
    }

    @Test
    @DisplayName("나누기 테스트")
    void test2() {
        Calculator calculator = new Calculator();
        Double result = calculator.operate(8, "/", 2);
        System.out.println("result = " + result);

        Assertions.assertEquals(4, result);
    }
}

추가할 내용

// test 코드 작성하는 방법
-> test파일에 테스트 코드 작성
-> 방법 1. window : ctrl + shift + t, mac : command + shift + d
-> 방법 2. 테스트 코드를 작성할 클래스의 이름에서 우클릭 -> Generate -> test -> OK
-> Java의 경우 main함수의 run을 통해서 프로젝트가 실행되는데, Test코드는 main이 없다.
-> JUnit은 테스트 실행 환경을 따로 가지고 있기 때문에 main메서드를 실행시키거나 서버를 따로 실행시키지 않아도 각각의 메서드 혹은 기능별로 코드를 작성해서 실행시켜 테스트 가능

// test코드를 작성하는 방법은 나중에 더 배울 예정

  • 메서드 명은 실행하는데 아무 상관 없음

  • @Test 애너테이션을 통해서 Test실행환경에서 실행시킬 코드라는 것을 명시

    • Junit의 Test 패키지 사용
    • IntelliJ 라인 숫자 옆에 초록색 화살표로 Test를 실행(Run)할 수 있다.
  • 왼쪽 위의 체크 모양으로 어떤 Test인지 확인 가능

  • Assertions를 통해서 Test코드의 동작을 검사 // 5주차에서 배울 내용

  • 테스트하는 상황(ex. if문 하나, else if문 하나)하나를 edge라고 표현하고, 이런 edge들을 전부다 테스트하는 것이 제대로 테스트 했다고 볼 수 있고 이 기능을 전부 테스트했다 볼 수 있고, 단위테스트를 했다 할 수 있다.

profile
공부 기록 보관소

0개의 댓글