안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 테스트 시작하기 (Junit 테스트 방법)] 입니다. : )
0. 들어가기 앞서
사실 Junit을 포스팅 한다기 보다는 Spring Boot에서 제공하는 테스트 기능을 사용하기 앞서 한번 끊어가는 시간이라고 보면 될 것 같다.
궁극적으로는 스프링 부트에서 제공하는 기능으로 통합테스트, 단위테스트 방법을 정리 하려고 한다.
이에 앞서 기본적으로 사용되는 Junit의 설정 및 IntelliJ에서 Junit 테스트 방법에 대해 간단히 정리 하려고 한다.
1. Junit 설정
▶ 1. Junit 이란? 특징?
- Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다.
- 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별한다.(ex: assertEquals(예상값, 실제값)) - jUnit4 이후부터는 테스트를 지원 어노테이션을 제공한다.(@Test @Before @After 등) - @Test 메서드가 호출할 때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 한다.
▶ 2. Junit 환경 설정
- IntelliJ + SpringBoot 기반으로 테스트 하였다.
- 사실 스프링 이니셜라이져로 프로젝트를 생성한 경우 Dependency에서부터 거의 설정을 따로 해줄 것이 없는데 그건 "spring-boot-starter-test" 때문이다.
1) 스프링부트 테스트 디펜던시
- 스프링부트는 애플리케이션 테스트를 위한 많은 기능을 두 가지 모듈로 제공한다.
① spring-boot-test : 핵심 기능 포함 ② spring-boot-test-configuration : 테스트를 위한 AutoConfiguration 제공
- 이니셜 라이즈로 프로젝트를 생성 하였으면 이미 테스트를 위한 디펜던시가 추가 되어 있다.
("spring-boot-starter-test")
2) "spring-boot-starter-test" 에는 다음 라이브러리들이 포함되어 있다.
- JUnit 5 (JUnit 4와의 하위 호환성을위한 빈티지 엔진 포함)
(이에 별다른 설정 없이 Junit5도 사용 가능) - 스프링 테스트 및 스프링 부트 테스트 - AssertJ - Hamcrest - Mockito - JSONassert - JsonPath
※ 스프링 부트 2.x 이후버전에서는 JUnit 4 및 JUnit 5 테스트를 모두 실행할 수 있다.
※ JUnit 5로 마이그레이션 한 경우 다음 예제와 같이 JUnit 4 지원을 제외해야 하는데, 스프링 이니셜라이져로 프로젝트를 생성한 경우 이미 제외 되어 있을 것이다.