본문 바로가기
Back/Spring

테스트코드

by Inventer 2022. 3. 14.

JUnit : 자바의 단위테스트를 위한 프레임워크

 

<Fig 1> testImplementation에 나와있는 spring boot dependencies 추가

1. 테스트를 할 화면 창에 Ctrl + Shift + T

2. 아래 클릭

3. ok 클릭

4. 테스트 코드 생성 확인

5. 테스트 코드 작성

 

* assertEquals는 왼쪽에 예상되는 아웃풋, 오른쪽에는 내 아웃풋을 넣어줌

 

6. 함수만 실행 Ctrl + shift + F10

중앙 상단쪽에 Tests Passed를 확인할 수 있음.

 

7. 일부로 틀리기

! 느낌표 하나로 테스트가 실패한 것을 볼 수 있음.

 

8. MockitoExtension 사용하기

 

package com.fastcampus.programming.dmaker.service;

import com.fastcampus.programming.dmaker.code.StatusCode;
import com.fastcampus.programming.dmaker.dto.CreatedDeveloper;
import com.fastcampus.programming.dmaker.dto.DeveloperDetailDto;
import com.fastcampus.programming.dmaker.dto.DeveloperDto;
import com.fastcampus.programming.dmaker.entitiy.Developer;
import com.fastcampus.programming.dmaker.repository.DeveloperRepository;
import com.fastcampus.programming.dmaker.repository.RetiredDeveloperRepository;
import com.fastcampus.programming.dmaker.type.DeveloperLevel;
import com.fastcampus.programming.dmaker.type.DeveloperSkillType;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.Extensions;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;


import java.util.List;
import java.util.Optional;

import static com.fastcampus.programming.dmaker.code.StatusCode.EMPLOYED;
import static com.fastcampus.programming.dmaker.type.DeveloperLevel.*;
import static com.fastcampus.programming.dmaker.type.DeveloperSkillType.FRONT_END;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.BDDMockito.given;

//어플리케이션을 직접띄우는 것과 비슷하게, 통합테스트 함.
@ExtendWith(MockitoExtension.class)
class DMakerServiceTest {

    @Mock
    private DeveloperRepository developerRepository;

    @Mock
    private RetiredDeveloperRepository retiredDeveloperRepository;

    @InjectMocks
    private DMakerService dMakerService;

    @Test
    public void testSomething() {

        given(developerRepository.findByMemberId(anyString()))
                .willReturn(Optional.of(Developer.builder()
                        .developerLevel(SENIOR)
                        .developerSkillType(FRONT_END)
                        .experienceYears(12)
                        .statusCode(EMPLOYED)
                        .name("name")
                        .age(12)
                        .build()));

        DeveloperDetailDto developerDetail = dMakerService.getDeveloperDetail("memberId");

        assertEquals(JUNGNIOR, developerDetail.getDeveloperLevel());
        assertEquals(FRONT_END, developerDetail.getDeveloperSkillType());
        assertEquals(12, developerDetail.getExperienceYears());
    }
}

assertEquals 메서드 사용하고, Validation 로직에 걸린다면 Test가 failed 되도록 구성하였다.

현재 JUNGNIOR 값은 exp year가 12일 때는 SENIOR이기 때문에 에러를 반환한다.

 

 

'Back > Spring' 카테고리의 다른 글

Spring Web Layer(Dto?, Dao?)  (0) 2022.03.28
[Spring] Null Safety  (0) 2022.02.08
[Spring] SpEL(Spring Expression Language)  (0) 2022.02.08
[Spring] Resource  (0) 2022.02.08
[Spring] Validation, Data Binding  (0) 2022.02.08

댓글