2013-11-21 2 views
0

을 던지는되지 않으며,의는, SomeException 내 테스트 케이스에서 형의 RuntimeException왜 mockito dothrow 내가 무효 메소드가 예외

SomeException extends RuntimeException 

이다 "SomeClass"

public void someMethod(SomeArg arg) throws SomeException{ 

에 말할 수, 나는 쓰기 :

SomeArg someArg =new SomeArg(); 
someArg .setId(1234); 
Mockito.doThrow(new SomeException()). when(someClass).someMethod(someArg); 

그리고 예외

012을 기대
@Test(expected=SomeException .class) 

하지만 놀랍게도 예외는 발생하지 않습니다. 내가 물건을 놓친거야? 코멘트에서

+0

흠, 내가 toString이 적절하지 않거나 경우가있는 것으로 나타났습니다 무엇 : "SomeClass"는 조롱하는 경우

는, 당신은 당신이 테스트의 라인에게 세트를 추가 있는지 확인해야 equals 메소드에 대한 인수가 충분하지 않아 Mockito가 예외를 발생시키지 않습니다. 첫 번째 경우 toString은 NPTR을 던지고 있었고 다른 사용 사례에서는 평등성이 충분하지 않아 정보를 얻을 수 없었습니다 (ID 중 하나가 누락되었습니다). 왜이 문제로 인해 mockito의 동작이 실패합니까? 이 물건들에 대해 평등이나 어떤 조작이 실패했다면, 나는 이해할 수있었습니다.하지만 나는 방금 철저히 모키토를 시작했습니다. – cpandey05

+0

그래서 결국 문제를 해결할 수 있었습니까? SomeArg 구현을 게시 할 수 있습니까? – macias

+1

예, Mockito는 적절하게 추적을 제공하지 않았습니다 .. tostring 및 equals는 예외를 던지고있었습니다. 예외적으로 mockito가 적절하게 전파하지 못했습니다. 예외로 말하면 추적은 누락되었습니다. 아래의 모듈에서 NPTR을 수정하면 해결되었습니다. – cpandey05

답변

0

:

예, Mockito 제대로 추적을 포기하지 않을했다 .. 주석 된 toString 언급 등호 (=) mockito에 의해 전파되는되지 않은 예외가 발생했다으로 제대로은 예외를 말할 것 -all - 그 흔적은 빠졌어. 아래의 모듈에서 NPTR을 수정하면 해결됩니다.

0

나는 비슷한 문제가있었습니다. 필자는 powermock을 사용하여 테스트중인 클래스를 조롱했는데 (테스트중인 클래스는 추상 클래스 였기 때문에) 테스트 중에 실제 메소드를 호출해야한다고 설정하지 않았다. 이렇게하면 doThrow가 호출되지 않습니다.

doCallRealMethod().when(SomeClass).someMethod(someArg); 
관련 문제