Tengo un método de utilidad para encontrar método de obtención de un objeto para un campo determinado (utilizando la reflexión):Cómo hacer Class.getMethod() lanzar una SecurityException
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
}
}
me gustaría escribir una prueba de que la unidad cubre el escenario SecurityException, pero ¿cómo puedo hacer que getMethod arroje una SecurityException?
Los estados javadoc que getMethod
tirará SecurityException
Si un administrador de seguridad, s, está presente y cualquiera de las siguientes condiciones se cumple:
invocación de s.checkMemberAccess (esto, Member.PUBLIC) niega el acceso al método
el cargador de clases de la persona que llama no es el mismo que un antepasado de la clase l ALA DE RUEDAS para la clase actual y la invocación de s.checkPackageAccess() niega el acceso al paquete de esta clase
yo preferiría para desencadenar la excepción normalmente, en lugar de recurrir a un marco de burla.
Gracias @Bozho! Es un escenario muy poco probable, pero es bueno poder realizar pruebas fácilmente. –