JUnit SpringBoot 테스트케이스 작성

Yeppi's 개발 일기·2022년 7월 6일
0

Spring&SpringBoot

목록 보기
15/16

1. JUnit 과 테스트케이스

JUnit 은 테스트 케이스를 쉽게 만들 수 있도록 도와주는 도구

  • JUnit
    • 자바 기반의 단위 테스트 도구
    • 종류
    1. 3.X 기반 (전통적)
    2. 4.X 기반 (Annotation 과 정적 import 활용)
  • 테스트 케이스 Test Case
    = 테스트 클래스
    • 어떤 클래스에 대해 별도의 테스트 클래스를 작성
    • @Test 가 적용된 메서드가 무조건 실행된다
    • 테스트 코드를 재사용할 수 있다
  • 테스트 슈트 Test Suite
    • 연관된 테스트 케이스들의 묶음
  • 테스트 케이스란?
    • 내가 만든 클래스를 테스트하기 위한 별도의 테스트 클래스를 따로 만드는 것
    • 재사용성을 높이기 위해 테스트 케이스를 작성한다.
    • 테스트에 사용된 데이터가 다시 테스트할 때 남아있어야 한다.


2. 간단 실습

본 실습에서는 sts 프로그램을 사용한다. 또한 4.X 기반 (Annotation 과 정적 import 활용)을 활용하여, JUnit 을 간단하게 활용해볼 것이다.
SpringBoot과 관련하여 자세한 테스트케이스 작성은 추후에 공부하여 정리해보도록 하겠다.


  • MyCalc 클래스를 테스트하는 MyCalcTest 라는 테스트 클래스를 작성해보자

  • MyCalcTest 코드

    .
    .
    .
    
    class MyCalcTest {
    	
    	private MyCalc calc;
    
    	@BeforeEach
    	void setUp() throws Exception {
    		System.out.println("===> tearDown()");
    		calc = new MyCalc(10, 3);
    	}
    
    	@AfterEach
    	void tearDown() throws Exception {
    		System.out.println("===> tearDown()");
    		calc = null;
    	}
    
    	@Test
    	void testPlus(){
    		System.out.println("---> testPlus()");
    		assertEquals(13, calc.plus());
    	}
    
    	@Test
    	void testMinus(){
    		System.out.println("---> testMinus()");
    		assertEquals(7, calc.minus());
    
    	}
    
    }
  • MyCalc 코드

    ```java    
    class MyCalc {
    	private int x;
    	private int y;
    	
    	
    	public MyCalc(int x, int y) {
    		this.x = x;
    		this.y = y;
    	}
    	
    	public int plus() {
    		return x + y;
    	}
    	
    	public int minus() {
    		return x - y;
    	}
    
    }
    ```

@BeforeAll

  • 글로벌 초기화 메서드

  • 모든 테스트 앞에서 딱 한번 실행

@AfterAll

  • 모든 테스트 종류 후 마지막에 딱 한번 실행

@BeforeAll, @AfterAll 는 별로 쓸일이 없음

@BeforeEach, @AfterEach

  • @Test 가 붙은 메서드 앞뒤로 실행

@Test

  • 테스트 수행



  • JUnit 실행 결과
    특별한 출력 결과가 없더라고, 녹색 바가 뜨면 성공!

    빨간 바와 함께 어떤 에러 목록이 뜬다면 실패ㅠ

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글