이 포스트에서는 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
스프링 부트는 애플리케이션 테스트를 위한 많은 기능을 두 가지 모듈로 제공한다.
- spring-boot-test : 핵심 기능 포함
- 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);
}
}
상기와 같이 코드를 작성하면 메소드 및 클래스 단위로 테스트가 가능하다.
'Framework > Spring' 카테고리의 다른 글
[Spring] MyBatis Log 설정하기 (0) | 2021.12.16 |
---|---|
[Spring] Get Request 의 파라미터를 객체로 받을 때의 Case Convert (0) | 2021.12.15 |
[Spring] MyBatis 연동 (0) | 2021.12.06 |
[Spring] Repository, Pageable, Sort (0) | 2021.12.04 |
[Spring] Timezone 적용 (feat.@JsonFormat) (0) | 2021.12.03 |