이번 장에서는 프로그램의 무결성을 보장하고 코드 품질을 향상시키는데 중요한 테스트 코드 관련 어노테이션을 알아 보고자 한다.
각종 테스트를 위한 어노테이션 기반 기능을 제공하여 특정 주제에 맞게 테스트를 구현하고 관리할 수 있다.
spring-boot-starter-test
아래에서 다양한 어노테이션을 알아 보도록 하자.
예전에는 프로젝트를 생성하면 아래와 같이 기본으로 제공되는 테스트 코드가 생성 되었다.
하지만 Junit5부터 @RunWith 어노테이션 -> @ExtendWith 어노테이션을 사용하게 된다.
@Runwith 어노테이션에 비해 몇 가지 중요한 차이가 있는데 메타 어노테이션을 지원하고, 여러번 중복 사용할 수 있는 점이다.
예를 들어서 스프링에서 빈을 주입하고자 하면 @Component 어노테이션을 지정해야 한다. 하지만 컨트롤러, 서비스, DAO 클래스 같은 경우에는 @Controller, @Service, @Repository 어노테이션만 붙혀준다.
위 3가지 어노테이션으로도 빈을 주입할 수 있다.
그 이유는 @Controller 어노테이션 안에는 @Component 어노테이션이 달라 붙어 있기 때문이다
그래서 @Component 어노테이션을 메타 어노테이션이라고 부른다.
다시 본론으로 돌아오자면,
최근 스프링 부트는 Junit5를 사용하기 때문에 메타 애노테이션으로 적용되어 있어 위의 사진과 같이 @RunWith(SpirngRunner.class) 가 생략 되어있다.
아래 사진처럼 SpringBootTest 어노테이션에 포함되어있는 것을 볼 수 있다.
다음으로 @SpringBootTest 어노테이션의 파라미터를 알아보자.
참고자료
https://www.whiteship.me/springboot-no-more-runwith/
처음배우는 스프링부트2