void 메소드가 예외를 던지는 Mockito 테스트


399

void반환 유형 이있는 메소드가 있습니다. 또한 많은 예외를 throw 할 수 있으므로 발생하는 예외를 테스트하고 싶습니다. 같은 이유로 모든 시도가 실패했습니다.

Stubber 유형의 when (T) 메소드는 인수 (void)에 적용 할 수 없습니다.

특정 예외를 발생시키는 방법을 얻는 방법에 대한 아이디어가 있습니까?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));

답변:


706

괄호가 잘못 배치되었습니다. 당신은 사용해야합니다

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);
                                          ^

그리고 아닙니다

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
                                                                   ^

이것은 설명서에 설명되어 있습니다


7
@edwardmlyte이 Mockito 불일치가 내가 MoxieMocks로
Muel

모두 사용할 수 있습니다 @clement : docs.mockito.googlecode.com/hg/latest/org/mockito/...를 . 예외를 생성해도 예외는 발생하지 않습니다.
JB 니 제트

1
@ JB Nizet 나는 당신에게 전적으로 동의하지만 doThrow (Exception.class) 대신 doThrow (new Exception ())을 쓰면 테스트를 시작할 때 다음 오류가 발생합니다. : 예상 예외 com.company.project.exception.ElementNotFoundException 만 가지고 org.mockito.exceptions.base.MockitoException
클레멘트

2
테스트중인 코드, 테스트 코드 및 예외의 전체 스택 추적을 사용하여 다른 질문을하십시오.
JB 니 제트

6
doThrow (new Exception ()). when (object) .voidMethod (any ());
Soumyajit Swain

14

Mockito의 새로운 BDD 스타일을 사용하는 방법에 대해 궁금한 경우 :

willThrow(new Exception()).given(mockedObject).methodReturningVoid(...));

그리고 나중에 참조하기 위해 예외를 throw 한 다음 아무것도하지 않아도됩니다.

willThrow(new Exception()).willNothing().given(mockedObject).methodReturningVoid(...));

1
여기에 게시 해 주셔서 감사합니다. 메소드가 값을 리턴하는 경우 : given (mockedObject.methodReturningAnObject ()). willThrow (new Exception ()); 메소드가 아무것도 리턴하지 않는 경우 : willThrow (new Exception ()). given (mockedObject) .methodReturningVoid (...)); 설명 양식 javadoc : "공백을 바꾸려면 {@link Mockito # when (Object)} (또는 BDDMockito.given)와 다른 접근 방식이 필요합니다. 컴파일러는 괄호 안의 공법을 좋아하지 않기 때문입니다 ..."
Wolf359
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.