2016-08-10 2 views
4

나는 간단한 Java 메서드를 가지고 있는데, 어떤 것이 던지지 않았는지 확인하고 싶습니다. exceptions.mockito를 사용하여 예외가 throw되지 않았는지 확인하는 방법은 무엇입니까?

나는 이미 매개 변수 등을 조롱했다. 그러나 예외를 메서드에서 발생시키지 않았는지 테스트하려면 Mockito을 사용하는 방법을 모르겠다.

현재 테스트 코드 : 예외가 잡힌 경우

@Test 
    public void testGetBalanceForPerson() { 

    //creating mock person 
    Person person1 = mock(Person.class); 
    when(person1.getId()).thenReturn("mockedId"); 

    //calling method under test 
    myClass.getBalanceForPerson(person1); 

    //How to check that an exception isn't thrown? 


} 
+1

Mockito에서는이 작업을 수행 할 필요가 없습니다. JUnit은 해당 메소드가 호출 될 때 예외가 발생하면 테스트에 실패합니다. 그럼 ... 여분의 일을 할 필요가 없습니다. –

+0

그래도 실제로 테스트하는 것 같지 않니? 즉 verif 또는 assert 등이 없다는 것입니다. – java123999

+0

현재이 메서드가 예외를 throw하지 않는다는 것을 테스트하는 것입니다. 수표를 더 추가 할 수 있습니다 (예 : 'getBalanceForPerson'은 기대 값을 반환합니다 -하지만 JUnit 검사 인'assertEquals (expectedBalance, result)'입니다. –

답변

4

테스트 실패.

@Test 
    public void testGetBalanceForPerson() { 

    //creating mock person 
    Person person1 = mock(Person.class); 
    when(person1.getId()).thenReturn("mockedId"); 

    //calling method under test 
    try{ 
     myClass.getBalanceForPerson(person1); 

    } 
    catch(Exception e){ 
     fail("Should not have thrown any exception"); 
    } 
} 
1

는만큼 당신이 명시 적으로 진술하지 않는 한, 당신은 예외를 기대하고 있음을, JUnit을 자동으로 포착되지 않은 예외를 던졌다 어떤 테스트를 실패합니다.

예를 들어, 다음 테스트가 실패합니다 : 당신이 더 테스트가 예외에 실패합니다 확인하려면

@Test 
public void exampleTest(){ 
    throw new RuntimeException(); 
} 

, 당신은 간단하게 테스트 할 방법에 throw new RuntimeException();를 추가 할 수 있습니다 실행하여 테스트하고 실패했는지 확인하십시오.

예외를 수동으로 catch하지 않고 테스트에 실패하면 JUnit은 예외 메시지의 원본을 신속하게 찾을 수 있도록 전체 스택 추적을 오류 메시지에 포함시킵니다.

관련 문제