테스트 코드의 필요성
- 테스트 코드는 빠른 피드백 순환을 가능하게 하는 가장 중요한 수단이다.
- 점점 애플리케이션들이 분산화되며 테스트를 효율적으로 작성하려고 노력한다,
- 개발자들이 예측할수 있는 모든 케이스를 테스트 코드로 짜도록 노력해야한다. 예측 할수 있는 예외케이스를 Throw하는 거와 별개 진행을 해야한다.(다만 시간이 오래걸리는 단점.. 테스트 코드가 마치 비지니스 로직을 짜는 것과 같은 느낌이..)
- 비니지스 로직이 변경되었을 경우 기존에 완성해둔 테스트 코드로 사이드 이펙트 확인이 가능하다.
- 그외 다양한 유명한 개발자분들이 가장 중요하다 확신하고 있다.
스프링 부트 애플리케이션 테스트
스프링 부트 애플리케이션의 테스트는 크게 단위 테스트와 통합 테스트로 구분할수 있다.
- 통합 테스트 - 실행 중에 스프링 애플리케이션 컨텍스트에 접근하는 모든 테스트
- 단위 테스트 - 스프링 애플리케이션 컨텍스트에 의존하지 않는 테스트
간단한 Context 로딩 테스트
Application.java 는 기본과 동일하게 쓰면되서 코드를 첨부하지 않음
ApplicationTest
1
2
3
4
5
6
7
8
9
10
11
12
13 @SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTests {
@Autowired
private ApplicationContext applicationContext;
@Test
public void contextLoads() throws Throwable {
Assert.assertNotNull("컨텍스트 로딩 테스트 정상작동확인",
this.applicationContext);
}
}
- @Run?With - JUnit에 사용, 어떤 테스트 러너전략을 사용할지 알려준다.
- @SpringBootTest - 스프링 부트 테스트 클래스임을 알려줌, 테스트 클래스가 애플리케이션 컨텍스트를 로딩할수 있게 해주는 ContextConfiguration 탐색을 지원 (해당 어노테이션에 아무 파라미터도 지정되지 않을 경우 SpringConfiguration 어노테이션에 의한 탐색방식으로 어플리케이션 컨텍스트 로딩)
(SpringConfiguration은 패키지 루트에서부터 빈을 탐색)
‘클라우드 네이티브 자바 4장 테스트 참고’