SecurityExceptionを投げる:Class.getMethodの作り方()特定のフィールドのオブジェクトのゲッターメソッド(用いた反射)を見つけるために、私はユーティリティメソッドを持つ
public static Method findGetter(final Object object, final String fieldName) {
if(object == null) {
throw new NullPointerException("object should not be null");
} else if(fieldName == null) {
throw new NullPointerException("fieldName should not be null");
}
String getterName = getMethodNameForField(GET_PREFIX, fieldName);
Class<?> clazz = object.getClass();
try {
return clazz.getMethod(getterName);
} catch(final NoSuchMethodException e) {
// exception handling omitted
} catch(final SecurityException e) {
// exception handling omitted
}
}
は、私はユニットテストを書きたいことSecurityExceptionのシナリオをカバーしていますが、どうすればgetMethodをSecurityExceptionをスローすることができますか?セキュリティマネージャ、sが存在すると、次の のいずれかの条件が満たされた場合getMethod
は、SecurityExceptionが
をスローします
javadocの状態:s.checkMemberAccessの
呼び出し( this、Member.PUBLIC)は、メソッドへのアクセスを拒否する
呼び出し元のクラスローダーがクラスlの祖先でも祖先でもない s.checkPackageAccess()の現在のクラスおよび呼び出しのためのoaderは、このクラス私はむしろモックフレームワークに頼るよりも、通常は例外をトリガすることを好む
のパッケージへのアクセスを拒否します。
ありがとう@Bozho!非常に起こりそうなシナリオですが、簡単にテストできるのはうれしいことです。 –