@SpringBootTest
- 통합 테스트를 제공하는 기본적인 스프링 부트 테스트 어노테이션
- 애플리케이션이 실행될 때의 설정을 임의로 바꾸어 테스트를 진행할 수 있으며 여러 단위 테스트를 하나의 통합된 테스트로 수행할 때 적합함
- 스프링 부트 1.4버전부터 제공되며, 스프링 부트 프로젝트를 만들면 메인 클래스와 함계 기본 제공됨
- 실제 구동되는 애플리케이션과 똑같이 애플리케이션 컨텍스트를 로드하여 테스트함
- (주의) 애플리케이션에 설정된 빈을 모두 로드하기 때문에 애플리케이션 규모가 클수록 느려짐
- 기본 제공 클래스명은 프로젝트명에 'Tests'를 붙인 형태로 자동 생성됨
- @RunWith 어노테이션을 사용하면 JUit에 내장된 러너를 사용하는 대신 어노테이션에 정의된 러너 클래스를 사용함
- @SpringBootTest 어노테이션을 사용하여면 JUit 실행에 필요한 SpringJUit4ClassRunner 클래스를 상속받은 @RunWith(SpringRunner.class)를 꼭 붙여서 사용해야 함
Tests예제 1. 기본 생성
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SoonApiApplicationTests {
@Test
public void contextLoads() {
}
}
Tests예제 2.
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(
//value = "value=test",
properties = {"property.value=propertyTest"},
classes = {SoonApiApplication.class},
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SoonApiApplicationTests {
//@Value("${value}")
//private String value;
@Value("${property.value}")
private String propertyValue;
@Test
public void contextLoads() {
//Assert.assertThat(value, Matchers.is("test"));
Assert.assertThat(propertyValue, Matchers.is("propertyTest"));
}
}
-> @SpringBootTest 의 프로퍼티 중 value와 properties를 함계 사용하면 안됨
파라미터 설명
-
value : 테스트가 실행되기 전에 적용할 프로퍼티를 주입시킬 수 있음 즉, 기존의 프로퍼티를 오버라이드함
-
properties : 테스트가 실행되기 전에 {key=value} 형식으로 프로퍼티를 추가할 수 있음
-
classes : 애플리케이션 컨텍스트에 로드할 클래스를 지정할 수 있음 따로 지정하지 않으면 @SpringBootConfiguration을 찾아서 로드함
-
webEnvironment : 애플리케이션이 실행될 때의 웹 환경을 설정할 수 있음
-
@ActiveProfiles() : 프로파일 환경값을 부여하여 여러 환경을 사용가능함
-
테스트에서 @Transactional을 사용하면 테스트를 마치고 롤백함
'공부 > Spring' 카테고리의 다른 글
[Boot] 스프링 부트 배치 (0) | 2019.03.11 |
---|---|
[Boot] @WebMvcTest (0) | 2019.02.15 |
[AvtiveMQ] 정리 (0) | 2019.02.10 |
[Boot] 환경설정 관련 (0) | 2019.02.10 |
[JPA] 스프링 부트 + jPA 사용시 참고.... (0) | 2019.02.09 |