728x90
Spring boot 초기화 (command line)
youtube-data-api 프로젝트를 생성하고 난 후에
IntelliJ IDEA 를 실행하여 해당 폴더를 지정하고 실행한다.
$ spring init -d=data-jpa,mysql,lombok -g=com.nuribot.youtube -a=youtube-data-api -n=youtube-data-api --package-name=com.nuribot.youtube --description="youtube api test & service" --build maven -j=1.8 -f --packaging=jar -v=1.0.0-SNAPSHOT youtube-data-api
$ cd youtube-data-api/
IntelliJ IDEA : File > Project Structure.. 선택
IntelliJ IDEA : File > Project Structure.. >
1. 왼쪽 탭 메뉴 Modules 선택
2. src > main > java 선택
3. 오른쪽 중단 탭 Sources 선택
IntelliJ IDEA : File > Project Structure.. >
1. 왼쪽 탭 메뉴 Modules 선택
2. src > test > java 선택
3. 오른쪽 중단 탭 Tests 선택
@SpringBootTest
- 실제 구동되는 어플리케이션과 똑같이 ApplicationContext를 로드하여 하고 싶은 테스트를 수행할 수 있습니다.
- 단, 어플리케이션에 설정된 bean 을 모두 로드하기 때문에 규모가 클수록 느립니다. - 단위테스트가 무의미해질 수 있습니다.
- 어플리케이션이 실행될 때의 설정을 임의로 바꾸어 테스트 진행 가능합니다.
- 여러 단위 테스트를 하나의 통합된 테스트로 수행할 때 적합합니다.
- 메인클래스와 함께 기본 제공됩니다.
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Test
public void contextLoads() {
}
}
@RunWith
- JUnit에 내장된 Runner를 사용하는 대신 어노테이션에 정의된 Runner 클래스 사용합니다.
- @SpringBootTest 를 사용하려면 JUnit 실행에 필요한 SpringJUnit4ClassRunner 클래스를 상속받은 @RunWith(SpringRunner.class)를 붙여야 합니다.
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class ChannelsListTest {
}
@SpringBootTest 의 파라미터들
value : 테스트가 실행되기 전에 적용할 프로퍼티들을 주입할 수 있습니다. (기존의 프로퍼티 오버라이드)
properties : 테스트가 실행되기 전에 {key=value} 형식으로 프로퍼티 추가할 수 있습니다.
classes : ApplicationContext에 로드할 클래스 지정할 수 있습니다.
(지정하지 않으면 @SpringBootConfiguration을 찾아서 로드합니다.)
webEnvironment : 어플리케이션이 실행될 때의 웹 환경을 설정할 수 있습니다.
(기본값은 Mock 서블릿을 로드하여 구동)
// value와 properties는 함께 사용할 수 없으므로 에러 발생
@RunWith(SpringRunner.class)
@SpringBootTest(value = "value=test"
, properties = {"property.value=propertyTest"}
, classes = {DemoApplicationTests.class}
, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DemoApplicationTests {
@Value("${value}")
private String value;
@Value("${property.value}")
private String propertyValue;
@Test
public void contextLoads() {
assertThat(value, is("test"));
assertThat(propertyValue, is("propertyTest"));
}
}
사용 팁
- 프로파일(개발, QA, 운영) 마다 다른 DataSource를 갖는 경우, @ActiveProfiles("local") 을 사용할 수 있습니다.
- @Transactional을 사용하면 테스트를 마치고 나서 수정된 데이터가 롤백됩니다.
- @SpringBootTest는 기본적으로 @SpringBootApplication 이나 @SpringBootConfiguration 을 찾습니다. (둘 중 하나는 필수로 가지고 있어야 합니다.)
테스트 소스 작성
IntelliJ IDEA : TEST 소스 실행 설정하기 > 1. Edit Configurations... 선택
1. + 키를 선택
2. Junit 을 선택
3. Name 입력
4. TEST 하고자 하는 TEST Class 선택
4. VM options : -client -ea -Xmx1024m 으로 수정
5. Apply 및 OK 버튼 클릭
IntelliJ IDEA : TEST 소스 실행