인프런 커뮤니티 질문&답변

cheerup_km님의 프로필 이미지

작성한 질문수

더 자바, 애플리케이션을 테스트하는 다양한 방법

thenThrow() 안에는 runtime 익셉션만 선언가능한가요?

22.09.05 16:49 작성

·

1K

0

안녕하세요. 기선님

테스트 코드 작성은 처음이라 강의를 들으며 해보고 있는 수강생 입니다 !

다름이 아니라 throw 부분에 ioException이나 sqlException을 실행시키고 싶은데 에러엔

 

org.mockito.exceptions.base.MockitoException:

Checked exception is invalid for this method!

 

이렇게만 뜨더라구요 근데 runtime 익셉션은 정상적으로 실행되는 걸 보면서 thenthrow는 unchecked 익셉션만 가능한건지 궁금증이 생겼습니다.

 

혹시 ioException이나 sqlException 처럼 checked 익셉션을 실행하고 싶으면 어떻게 하면 좋을까요?

사정상 코드의 내용을 상세히 첨부할 수 없지만 대략적으로 올려봅니다

 @DisplayName("3. 실패 : DB insert 오류")
    public void 실패_DB_insert_오류() {

        //given
        //특정 객체 생성


        when(특정 서비스).thenThrow(new sqlException());

        //then - 실패 결과
        assertThrows(sqlException.class, () -> {
            log.info("!! DB insert 오류 !! ");
            //when - 프로세스가 진행
        });

        // verify를 통해 해당 프로세스 최소 1번 호출 되었는지 확인
        verify(kosService,atLeastOnce()).특정 서비스);

    }

답변 1

1

백기선님의 프로필 이미지
백기선
지식공유자

2022. 09. 14. 13:39

when(특정_서비스).thenThrow(new sqlException());

저기서 호출하는 그 특정 서비스에서 해당 checked 예외를 던질 수 있다고 선업해 보세요.

void 특정_서비스 throws SqlException 이런식으로요.