본문으로 바로가기

[Spring] Unit Test

category Framework/Spring 2021. 12. 6. 14:40
이 포스트에서는 Spring Boot 에서 제공하는 통합테스트, 단위테스트 방법을 정리하려고 한다.
이에 앞서 기본적으로 사용되는 Junit 에 대한 사전지식이 필요하며, 개발환경은 IntelliJ 를 사용한다.

1. Junit 이란?

  • Java 의 독립된 단위 테스트(Unit Test) 를 지원 해주는 프레임워크이다.
  • 단정(assert) 메소드로 테스트 케이스의 수행 결과를 판별한다. (ex. assertEquals(예상값, 실제값))
  • jUnit4 이후의 버전은 테스트 어노테이션을 제공한다. (@Test, @Before, @After ..)
  • @Test 어노테이션이 명시된 메소드가 호출될 때 마다 새로운 인스턴스를 생성하여 독립 테스트가 이루어진다.

2. Junit 환경설정

  • 인용구에 설명했듯 IntelliJ + SpringBoot 기반으로 테스트를 진행한다.
  • Spring Initializer 를 통해 프로젝트를 생성한 경우 별도의 Dependency 설정을 해줄 필요가 없는데 그것은
    "spring-boot-starter-test" 가 포함되었기 때문이다.

spring-boot-starter-test
스프링 부트는 애플리케이션 테스트를 위한 많은 기능을 두 가지 모듈로 제공한다.

  1. spring-boot-test : 핵심 기능 포함
  2. spring-boot-test-configuration : 테스트를 위한 AutoConfiguration 제공
// bundle.gradle
dependencies {
	// ...
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    // ...
}

"spring-boot-starter-test" 에는 다음 라이브러리들이 포함되어 있다.

  • JUnit 5 (JUnit4 와의 하위 호환성을 위한 빈티지 엔진 포함)
  • 스프링 테스트 및 스프링 부트 테스트
  • AssertJ
  • Hamcrest
  • Mockito
  • JSONassert
  • JsonPath

3. IntelliJ 에서 Junit 테스트

테스트 하고자 하는 클래스에 커서를 두고 Alt + Enter 또는 마우스 우클릭 후 Go To -> Test

아래와 같이 테스트 클래스를 자동으로 생성해주는 창이 열린다.

 

테스트 코드를 작성한다.

package com.csd.asr.data.dto;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class UserDtoTest {

    @Test
    public void getId() {
        final UserDto userDto = UserDto.builder()
                .id(1L)
                .gwId("tailerbox")
                .userName("Matt Tailer")
                .build();
        final Long id = userDto.getId();
        assertEquals(1L, id);
    }

    @Test
    public void getUserName() {
        final UserDto userDto = UserDto.builder()
                .id(1L)
                .gwId("tailerbox")
                .userName("Matt Tailer")
                .build();
        final String userName = userDto.getUserName();
        assertEquals("Matt Tailer", userName);
    }
}

상기와 같이 코드를 작성하면 메소드 및 클래스 단위로 테스트가 가능하다.

Ctrl+Shift+F10
테스트 결과