2013-10-20 4 views
8

예외를 throw하는 void 메서드를 조롱하는 이유는 예외 처리해야하는 이유를 알고 싶습니다. 예를 들어 지금Mockito, 확인 된 예외가있는 void 메서드

public class MyObject { 
    public void call() throws SomeException { 
     //do something 
     } 
} 

를 들어

내가이 일을하고,

@Mock 
MyObject myObject; 

doNothing().when(myObject).call() 

내가 예외를 처리해야하는 이유, 내가 궁금

"error: unreported exception SomeException; must be caught or declared to be thrown"

말을 컴파일 오류가 발생합니다 그 방법 자체는 조롱 당하고있다.

+2

처리 할 필요가 없습니다. 테스트 메소드에'예외를 던지기 '만하면됩니다. 저는 JUnit의 모든 메소드에'예외를 던지기 '를 버릇의 문제로 표시합니다. 그렇게 할 이유가 없습니다. –

+0

@DawoodibnKareem 테스트에서 예외를 throw한다고 가정 할 때, 예를 들어'@Test (expected = ...)'처럼 어서션 헬퍼를 사용합니다. 필자는 테스트 메소드 시그니처에서'throws' 절을 피하려고합니다. 테스트 자체에 대한 유용한 정보가 없기 때문입니다. –

답변

7

Java에서 Mockito를 사용하여 객체를 모의 할 때. 프레임 워크는 언어 스펙을 변경하지 않습니다. 그리고 Java에서는 컴파일시에 throws 절이 정의됩니다. 런타임에 선언 된 예외를 변경할 수 없습니다. 귀하의 경우, MyObject.call() 메서드를 호출하면 일반적인 Java 코드에서와 마찬가지로 SomeException을 처리해야합니다.

단위 테스트에서 테스트하지 않는 것들로 처리하고 싶지 않으므로. 귀하의 경우, 나는 시험 방법에 throws SomeException을 단순히 재 선언 할 것입니다.

관련 문제