2016-08-10 13 views
4

私は単純なJavaメソッドを持っていますが、exceptionsがスローされないことを確認したいと思います。mockitoを使用して例外がスローされないことを確認する方法は?

私は既にパラメータなどを嘲笑しましたが、私は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

これは実際にテストしているようなものではありませんか?すなわちverifysやassertなどはありませんか? – java123999

+0

現在、このメソッドが例外をスローしないことを単にテストしています。小切手を追加することは自由です。 '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();を追加することができますテストし、失敗したかどうかを確認します。

手動で例外をキャッチせずにテストに失敗した場合、JUnitはエラーメッセージに完全なスタックトレースを含めるので、例外の原因をすばやく見つけることができます。

関連する問題