
테스트코드개발/Spring2022. 3. 14. 20:00
Table of Contents
JUnit : 자바의 단위테스트를 위한 프레임워크
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이기 때문에 에러를 반환한다.
'개발 > 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 |
@Inventer :: 스타트업 이야기, 강민준 블로그
스타트업의 이야기
연락은 inventer@nangman.im 으로 부탁드려요