개발/Spring

[Spring] Spring boot 에서 JUnit 사용하기

hojak99 2017. 8. 25. 10:39

처음으로 Spring boot 에서 JUnit 을 사용하려고 구글 검색을 여러 글이 보였다.

하지만, 내 Spring boot 버전에서는 해당 글에 있는 어노테이션이 import 가 되지 않았다.


그 코드로는 다음과 같다.


@RunWith(SpringJUnit4ClassRunner.class)       ------------------------- ①
@SpringApplicationConfiguration(classes = Test.class)------ ②
@WebAppConfiguration -------------------------------------------------- ③
public class Test { ~ }


위 코드에서 

① 에서는 @RunWith 이란 어노테이션에 (SpringJUnit4ClassRunner.class) 가 있다. 우선 굳이 따라하려고 하지 않아도 된다. (SpringRunner.class) 로 대체된다.


② 에서는 @SpringApplicationConfiguration(classes = Test.class) 란 코드가 있다. 우선 이 부분에서 어노테이션이 import 되지 않았는데 필자가 사용하고 있는 Spring boot 버전에서는 사라지고 @SpringBootTest 란 어노테이션으로 바뀐 것 같다. 그래서 @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT) 로 대신해주면 된다.

 

③ 에서는 @WebConfiguration 이란 어노테이션이다. 필자는 ②까지는 어노테이션을 변경한 상태로 ③은 변경하지 않고 실행했을 때 오류가 발생했다. 



[사진 1: Failed to load ApplicationContext 오류]



[사진 1] 과 같은 오류가 발생했다. StackOverflow 에서는 ③ 과 같은 어노테이션 대신 

@ContextConfiguration(classes = Test.class, loader = AnnotationConfigContextLoader.class) 와 같이 코드를 작성하면 해결된다고 하였다. 물론 .class 앞에 있는 이름은 해당 클래스 이름이다. 



정리하면 다음과 같은 코드가 된다.



@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = RestfulApiServerApplicationTests.class, loader = AnnotationConfigContextLoader.class)
public class RestfulApiServerApplicationTests { ~ }


이제 JUnit을 오류없이 사용하면 된다.

반응형