2012-03-22 7 views
0

編集:肯定的なものではなく、失敗したテストケースを書きたいと思います。illegalaccessExceptionのテスト方法は?

私はJavaコードのテストケースを作成しています。リフレクションAPIを使用するメソッドのテストケースを記述するにはどうすればよいですか?結果のコードは私にIllegalAccessExceptionを与えます。 JUnitテストケースでシナリオを作成して、例外をテストできるようにするにはどうすればいいですか?

public double convertTo(String currency, int amount) { 
    Class parameters[] = {String.class, int.class}; 
    try { 
     Method classMethod = clazz.getMethod("convertTo", parameters); 
     return ((Double) classMethod.invoke(exhangeObject, new Object[]{currency, amount})).doubleValue(); 
    } catch (NoSuchMethodException e) { 
     throw new CurrencyConverterException(); 
    } catch (InvocationTargetException e) { 
     throw new CurrencyConverterException(); 
    } catch (IllegalAccessException e) { 
     System.out.println(e.getClass()); 
     throw new CurrencyConverterException(); 
    } 
} 

おかげで、 スリラム

答えて

4

反射がテスト対象のメソッドの実装の詳細なので、あなたは具体的にに対応するために必要はありません。このメソッドをテストするには、単に実行します。

@Test 
public void shouldNotThrowException() throws Exception { 
    testSubject.convertTo("JPY", 100); 
} 

を投げCurrencyConverterExceptionがある場合は、テストは失敗します。

あるいは、より明示的に:

@Test 
public void shouldNotThrowException() { 
    try { 
     testSubject.convertTo("JPY", 100); 
    } catch(CurrencyConverterException e) { 
     fail(e.getMessage()); 
    } 
} 

注意、あなたは例外をキャッチし、新しいものを投げるとき、あなたは常に新しいものでは元の例外をチェーンする必要があります。

} catch (IllegalAccessException e) { 
    throw new CurrencyConverterException(e); 
} 

編集:たとえば、あなたの代わりにこのパターンをお探しですか?例外がスローされることを保証する方法。二つの変種:

// will pass only if the exception is thrown 
@Test(expected = CurrencyConverterException.class) 
public void shouldThrowException() { 
    testSubject.doIt(); 
} 

または

@Test 
public void shouldThrowException() { 
    try { 
     testSubject.doIt(); 
     fail("CurrencyConverterException not thrown"); 
    } catch (CurrencyConverterException e) { 
     // expected 
     // use this variant if you want to make assertions on the exception, e.g. 
     assertTrue(e.getCause() instanceof IllegalAccessException); 
    } 
} 
+0

んが、私は失敗したテストケースを書きたいん。肯定的なものではありません。 – sriram

+0

私の更新された答えを見てください。 – Synesso

+0

第2のもの。 shouldThrowException – sriram

関連する問題