pom.xml에 테스트 디펜던시 라이브러리 추가하기
- junit4: java 유닛 테스트 라이브러리
- Mockito: Mock객체를 생성하기위한 라이브러리
<!-- ================================================================ -->
<!-- Junit4 -->
<!-- ================================================================ -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- ================================================================ -->
<!-- Mockito -->
<!-- ================================================================ -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
어노테이션
@RunWith
- 스프링 부트에 속한 어노테이션(@Autowired, @Component, ...등)을 사용할 수 있도록 해주는 어노테이션.
@RunWith(SpringRunner.class)
@SpringBootTest
- 스프링 부트를 실행시켜 테스트를 진행시키도록 해주는 어노테이션.
@SpringBootTest(classes = Application.class)
package 하위에 있는 파일들을 스캔해서 모든 외부 configuration들의 위치를 읽고 자동으로 configuration을 설정하여 스프링 어플리케이션을 실행시켜 줍니다.
기존에 설정된 configuration을 변경하지 않고 테스트 가능한 biz 테스트에 적합합니다.
@ContextConfiguration
- 스프링 통합 테스트에 필요한 ApplicationContext를 로드시켜주는 어노테이션
@ContextConfiguration( classes = Application.class )
SpringBootTest와 다르게 지정한 class를 기준으로 confiration을 설정하고 스프링 어플리케이션을 실행시켜주게 합니다. controller테스트 ( MVC 테스트 )와 같이 HTTP 요청/응답을 모킹해야하는 경우에 사용하기 적합합니다.
@WebMvcTest
- 스프링 MVC 테스트를 위한 어노테이션. HTTP 요청/응답을 모킹할 수있게 도와줍니다.
@WebMvcTest( controllers = ApprovalPathController.class)
@Mock
@MockBean
@InjectMocks
@Spy
Biz 테스트 세팅하기
1. 어노테이션 세팅
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class JoinUsBizTest {
2. 테스트할 biz에서 사용한 객체 모킹하기
@Mock
private UserBiz userBiz;
@Mock
private PrivacyPolicyConsentBiz privacyPolicyConsentBiz;
@Mock
private UserGrpRscGrpRelBiz userGrpRscGrpRelBiz;
@Mock
private MailValidationBiz mailValidationBiz;
3. biz에 모킹한 객체 주입 및 스파이 설정하기
@InjectMocks
@Spy
private JoinUsBiz joinUsBiz;
Controller 테스트 세팅하기
1. 어노테이션 세팅
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = ApprovalPathController.class)
@ContextConfiguration( classes = Application.class )
public class ApprovalPathControllerTest {
2. 테스트할 biz에서 사용한 객체 모킹하기
@MockBean
private IApprovalPathBiz approvalPathBiz;
@MockBean
private CustomInterceptor customInterceptor;
3. controller에 모킹한 객체 주입하기
@InjectMocks
private ApprovalPathController approvalPathController;
4. MockMvc 설정하기
private MockMvc mvc;
@Before
public void setup() throws Exception {
MockitoAnnotations.openMocks(this);
mvc = MockMvcBuilders
.standaloneSetup(approvalPathController)
.addInterceptors(customInterceptor).build();
when(customInterceptor.preHandle(any(), any(), any())).thenReturn(true);
}
- CustomInterceptor를 거치게 되면, 세션이 없어 컨트롤러 진입이 막히지만, 모킹한 customIntercepter를 삽입하여 컨트롤러에 진입가능하도록 변경합니다.
'Spring' 카테고리의 다른 글
[ Spring Boot ] JWT를 이용한 OAuth2 설정 (0) | 2021.12.21 |
---|---|
[ Intellij ] lombok이 적용되지 않을 때 (0) | 2021.10.26 |
[ Maven ] dependency 수동으로 설치하기 (0) | 2021.10.15 |
MappedInterceptor를 이용한 Interceptor 등록 (0) | 2021.10.06 |
IoC 와 DI (0) | 2021.10.05 |