Tôi có một phương pháp hữu ích để tìm phương thức getter của một đối tượng cho một lĩnh vực cụ thể (sử dụng phản ánh):Làm thế nào để làm cho Class.getMethod() ném một 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
}
}
Tôi muốn viết một bài kiểm tra đơn vị đó bao gồm trường hợp SecurityException, nhưng làm cách nào để tôi có thể thực hiện getMethod ném một ngoại lệ bảo mật?
Các trạng thái javadoc rằng getMethod
sẽ ném SecurityException
Nếu một người quản lý an ninh, s, là hiện tại và bất kỳ điều kiện sau đây được đáp ứng:
gọi của s.checkMemberAccess (điều này, Member.PUBLIC) từ chối truy cập vào phương thức
trình nạp lớp của người gọi không giống hoặc tổ tiên của lớp oader cho lớp hiện tại và gọi s.checkPackageAccess() từ chối truy cập vào các gói của lớp này
Tôi muốn kích hoạt các ngoại lệ bình thường, chứ không phải là phải dùng đến một khuôn khổ mocking.
Cảm ơn @Bozho! Đó là một kịch bản rất khó, nhưng thật tuyệt khi có thể kiểm tra dễ dàng. –