반응형
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 |
29 | 30 | 31 |
Tags
- statement.executequery() cannot issue statements that do not produce result sets.
- springboot
- LeetCode
- 스프링부트테스트
- aws
- ssl이란?
- easy
- xcrun: error: invalid active developer path
- error
- java version
- java
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- No tests found for given includes
- tls프로토콜확인
- log error
- Medium
- JUnit
- yum install java
- OpenFeign
- mysql executequery error
- springboottest
- java 버전 변경
- AWS CLI
- ssl프로토콜확인
- mac os git error
- java 1.8 11
- java 여러개 버전
- parse
- Java 1.8
- java 11
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