Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Optional 사용법
- Visual Studio Code
- spring multi thread
- AWS ssh
- ssh
- AWS 프로젝트
- AWS EC2
- AWS
- vscode
- github CI/CD
- CI/CD
- 창업
- @async
- 비주얼 스튜디오 코드
- 창업형인간되기
- java Optional
- optional
- java stream
- 창업 마인드
- AWS S3
- 마인드
- java null 처리
- 라이프해킹스쿨
- AWS 프로젝트 올리기
- 창업형인간
- spring async
- AWS 키페어
- 스트림 예제
- dockerfile
- 자바 스트림
Archives
- Today
- Total
Wookim
Junit service(bean) private method test 본문
junit으로 테스트를 작성 중 service(bean)의 private method를 테스트는 어떻게 하나 찾아봤다.
이를 정리해 본다.
테스트 내용은 다음과 같다.
미성년자임을 확인하기 위한 메소드
@Service
public class ComonUtilServiceImpl implements CommonUtilService{
private void verifyIsAdult(String birth){
LocalDate now = LocalDate.now();
// birth ex) 19930306
LocalDate birth = LocalDate.parse(birth, DateTimeFormatter.ofPattern("yyyyMMdd");
if(Period.between(birth, now).getYears() < 20){
throw new RuntimeException("미성년자 가입 불가");
}
}
}
위 메소드를 정상 작동하는지 확인해보자
TestClass 파일을 만들어야 하는데,
위 class 파일의 위치가
src/main/java/com.dev.ex.service.impl 이라면
src/test/java/com.dev.ex.service.impl test 하위 폴더에 동일한 패키지 경로로 test 클래스 파일을 생성해야 한다.
junit test class 파일
package com.dev.ex.service.impl;
...
@SpringBootTest
@RunWith(SpringRunner.class)
public class CommonUtilServiceTest{
@Autowired
private CommonUtilServiceImpl service;
@Test(expected = RuntimeException.class) // 미성년자 일 경우 예외 발생하기에 설정
public void 미성년자_검증하다(){
// 오늘로 성인이 되는 사람의 생년월일 생성
Localdate adultDate = LocalDate.now().minusYears(20);
String adult = adultDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// private method 테스트 하기
ReflectionTestUtils.invokeMethod(service, "verifyIsAdult", adult);
// 내일 성인이 되는 미성년자
Localdate adultDate = LocalDate.now().minusYears(20).plusDays(1);
String kid = adultDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// private method 테스트 하기
ReflectionTestUtils.invokeMethod(service, "verifyIsAdult", kid);
}
}
위 코드의 핵심 내용은
ReflectionTestUtils.invokeMethod(...) 이다.
해당 메소드에 3가지 인자가 필요하다.
- private method를 선언(구현)한 클래스
- 메소드 이름의 문자열
- 파라미터
위 3가지 매개변수를 넘기면 private method도 테스트 가능하다!
'programming language > Java' 카테고리의 다른 글
spring Async(비동기, 멀티스레드) 메소드 적용하기(1) (0) | 2021.05.18 |
---|---|
날짜 및 시간 정규식 예제(yyyy-MM-dd hh:mm:ss) (4) | 2021.05.12 |
Spring DTO class의 특정 컬럼이 매핑 되지 않는 문제 (0) | 2021.05.03 |
maven 태그 정리 (0) | 2020.05.26 |
maven multi module (6) | 2020.05.20 |
Comments