본문 바로가기
테스트/테스트코드

JUnit5 관련 어노테이션이나 설정관련 설명 정리

by 문자메일 2023. 4. 19.

Junit5 라이브러리 사용하기 위해선 아래 라이브러리 import 필요하다.

  • import org.junit.jupiter.api.Test;

 

 

동등 비교하기 위해선 아래 junit5 메서드 사용해야 함

  • assertEquals(기대값, 실제값); 

 

 

Service나 controller를 테스트 할 때, 테스트 대상 Service나 controller 에서 composition으로 주입받아서(의존하는) 객체가 있으면 객체를 생성(new) 할 때 마다 의존 객체도 구현해서 주입해줘야하는 문제가 발생한다.

 

그런경우 @SpringBootTest 어노테이션을 붙이면, 스프링에서 어플리케이션을 직접 띄우는 것과 유사하게 테스트를 할때도 모든 스프링 빈을 다 만들어서 애플리케이션 실행하는 것과 같은 환경을 만들어서 테스트를 돌릴 수 있게 해준다.

(= 테스트 대상 서비스나 컨트롤러에서 주입받아서 사용되는 객체들을 설정한대로 주입/만들어 준다는 말) 

@SpringBootTest는 주로 통합 테스트시에 사용함

그래서 아래처럼 @Autowired를 붙여서 스프링 Bean을 주입받아서 기능을 테스트를 할 수 있는 것

 

 

 

Unit Test 수행할 땐 @SpringBootTest 어노테이션 말고 @ExtendWith(MockitoExtension.class) 붙이고 테스트해야 함.

이 어노테이션의 의미는 JUnit 테스트를 Mockito라는 외부 라이브러리를 활용해서 진행하겠다 라는 의미이다.

 

@InjectMocks : 가짜 Mock 객체를 넣어줄 타겟 객체 지정

 

@Mock : Mock 객체 만들 것 위에 지정

 

 

아래 처럼 Mock 객체 동작을 정의하면, 테스트 할 메서드 로직에서 Mock으로 정의한 로직 호출 시 지정한 값이 응답된다.

given(테스트인스턴스.메서드(파라미터)).willReturn(return 받을 정의한 값);

ex : given(developerRepository.findByMemberId(anyString())).willReturn(Optional.of(Developer.builder().build()));

댓글