반응형
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
- java 1.8 11
- maybe not public or not valid?
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- property or field 'jobparameters' cannot be found on object of type
- No tests found for given includes
- java version
- LeetCode
- JUnit
- querydsl no sources given
- log error
- error
- Medium
- java 여러개 버전
- springboottest
- java
- mac os git error
- springbatch error
- springboot
- java 11
- 스프링부트테스트
- aws
- AWS CLI
- no sources given
- OpenFeign
- easy
- el1008e
- parse
- Java 1.8
- java 버전 변경
- yum install java
Archives
- Today
- Total
쩨이엠 개발 블로그
[ Springboot JUnit Test ] Please remove unnecessary stubbings or use 'lenient' strictness 본문
개발/Spring
[ Springboot JUnit Test ] Please remove unnecessary stubbings or use 'lenient' strictness
쩨이엠 2022. 9. 19. 16:44728x90
반응형
Mockito를 사용 할 때 분명히 되어야하는데 안될 때가 있다(?
테스트가 안될리가 없는데... 하고 살펴봤더니
UnneccessaryStubbingException이 나타났다
org.mockito.exceptions.misusing.UnnecessaryStubbingException:
Unnecessary stubbings detected.
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
1. -> at com.service.DashboardServiceTest.setLineStatus(DashboardServiceTest.java:52)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for UnnecessaryStubbingException class.
...
문제의 코드
@BeforeEach
void setLineStatus(){
...
when(objectRepository.getFirstByLineIdOrderByCreatedAtDesc(lineId)).thenReturn(Mono.just(object));
...
}
SpringBoot에서 Mockito Core 버전 3.x 에서 나타나는 에러로 불필요한 stub(when/then/return)이 있는 경우 나는 에러이다
테스트 세팅 중 @BeforeEach에 넣은 코드가 모든 @Test에서 필수로 쓰이지 않아서 이런 에러가 발생했다
Solution
1. @BeforeEach 에서 세팅하지 않고 @Test 안에 직접 세팅한다 ( 중복 코드가 많이 생길 수 있음)
2. 위의 솔루션대로 lenient를 추가한다
나는 10개의 테스트 중 한 테스트에서만 이 코드를 사용하지 않기때문에 직접 세팅하기엔 중복코드가 너무 많아진다.
2번째 솔루션으로 선택
...
import static org.mockito.Mockito.lenient;
...
@BeforeEach
void setLineStatus(){
...
lenient().when(objectRepository.getFirstByLineIdOrderByCreatedAtDesc(lineId)).thenReturn(Mono.just(object));
...
}
lenient를 추가해주면 Test가 제대로 동작하는것을 확인할 수 있다.
728x90
반응형
'개발 > Spring' 카테고리의 다른 글
Comments