일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- K8s
- jvm
- thread
- Real MySQL
- 스트림
- Kotlin
- 보조스트림
- gradle
- 토비의 스프링
- Stream
- OS
- MSA
- SpringBoot
- redis
- JPA
- IntellJ
- 자바 ORM 표준 JPA 프로그래밍
- 쿠버네티스
- Java
- mysql
- 백준
- spring
- 자바
- GC
- 토비의 스프링 정리
- Stack
- Collection
- 이스티오
- 스프링
- list
Archives
- Today
- Total
인생을 코딩하다.
[Spring] ArgumentMatcher<T> (단위테스트 할 때) 본문
728x90
반응형
Mockito를 활용해 단위테스트를 진행할 떄
PersonService.java에서 person.set(personDto) 로직을 주석처리 하였는데도 TestCode가 작동을 한다.
중요 로직을 주석처리 하였는데 오류를 검출하지 못한채로 검증을 해버리게 된다.
이유는 PersonServiceTest.java에서
verify(personRepository, times(1)).save(any(Person.class));
어떠한 로직이든 person class면 괜찮다고 생각하기 때문이다.
set을 주석처리 하여서 personDto가 들어가지 못하기 때문에 값은 다 null이 들어가지만,
밑에서 save가 되기 때문에 통과 되어버린다. 그래서 오류 검출을 하지 못하게 된다.
이 문제를 해결하기 위해 ArgumentMatcher<T>을 이용하여 테스트 코드를 만들었다.
ArgumentMatcher을 상속받고 matches로 매칭한다.
verify(personRepository, times(1)).save((argThat(new IsPersonWillBeUpdated())));
save할 때, IsPersonWillBeupdated의 조건들을 다 검사하고 save한다.
현재 PersonService.java에서 set이 주석처리 되어있기 때문에
save할때 null값들이 들어가게된다.
그래서 위와 같이 콘솔창에서 null값들이 들어가는 오류들을 확인 할 수 있게 된다.
이렇게 하면 좋은점이
우리가 set할때 값들의 변경이 일어나면 오류를 검출 할 수 있게 된다.
person.java에서 phoneNumber을 주석처리 하였을때 PhoneNumber = null로 오류를 확인 할 수 있게 된다
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] ExceptionHandler (0) | 2020.10.25 |
---|---|
[Spring] checked exception을 unchecked exception으로 변경해서 던져야 하는 경우 (0) | 2020.10.22 |
[Spring] 생성자 주입(autowired 3가지 방법) (0) | 2020.10.18 |
[Spring] Spring Boot Devtools (0) | 2020.09.22 |
[Spring] Spring Boot 시작 및 기초 (2) | 2020.09.20 |
Comments