처음으로 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을 오류없이 사용하면 된다.