반응형
환경: springboot2.6.2, intellij2021.2.2
junit5기반의 테스트 코드를 돌릴 때 아래와 같은 에러가 나면서 테스트가 안 돌아갈 때가 있다.
Execution failed for task ':query:test'.
> No tests found for given includes: [com.cqrs.query.service.RetryServiceTest.retryTest_with_bean](filter.includeTestsMatching)
import org.junit.jupiter.api.Test;
...
@SpringBootTest
class RetryServiceTest {
@Autowired
private RetryService retryService;
@MockBean
private AccountRepository accountRepository;
@Test
void retryTest_with_bean(){
//when
Mockito.when(accountRepository.findByHolderId(ArgumentMatchers.anyString())).thenThrow(NoSuchElementException.class);
assertThrows(NoSuchElementException.class, () -> retryService.getHolderAccountSummary());
//then
Mockito.verify(accountRepository, Mockito.times(3)).findByHolderId(ArgumentMatchers.anyString());
}
}
아래와 같이 intellij의 run test using설정이 gradle(default)로 되어 있을텐데, 저 값을 gradle -> intellij로 바꾸면 실행된다..
추가)
아래와 같이 Mockito.when().thenThrow() 로 exception 발생 시 Exception.class로 지정하면 에러가 나면서 실행이 되지 않는다.
Mockito.when(accountRepository.findByHolderId(ArgumentMatchers.anyString())).thenThrow(Exception.class);
-----------
//에러
Checked exception is invalid for this method!
Checked Exception 이란 위 그림에서 초록색 exception 인데, 이를 unchecked exception, 즉 RunTimeException이나 그 하위 exception 으로 바꿔주면 된다.
참고) exception 구분
728x90
반응형
'개발 > java' 카테고리의 다른 글
[jmh] benchmark test (0) | 2022.08.04 |
---|---|
[powermock] mock static method (0) | 2022.07.21 |
[java] jvm, java, gc (0) | 2022.02.24 |
[keyword] transient in serialization (0) | 2022.02.16 |
[junit] test runner (0) | 2022.01.03 |