### Question:
PropertyUtil { public static Object getProperty(Object object, String name) throws Exception { BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); if (propertyDescriptors != null) { for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor pd = propertyDescriptors[i]; if (pd.getReadMethod() != null && pd.getName().equals(name)) { return pd.getReadMethod().invoke(object); } } } return null; }  static URI replaceQuery(URI originalURI, Map<String, String> properties); static URI replaceQuery(URI uri, String query); static URI eraseQuery(URI uri); static String createQueryString(Map<String, ? extends Object> options); static Map<String, String> parseQuery(URI uri); static Map<String, String> parseQuery(String queryString); static Map<String, String> filterProperties(Map<String, String> properties, String optionPrefix); static Map<String, String> setProperties(Object target, Map<String, String> properties); static Map<String, Object> setProperties(Object target, Properties properties); static Map<String, String> getProperties(Object object); static Object getProperty(Object object, String name); static boolean setProperty(Object target, String name, Object value); static String stripPrefix(String value, String prefix); static String stripUpto(String value, char c); static String stripBefore(String value, char c);  }### Answer:
@Test public void testGetProperty() throws Exception { Options configObject = new Options("foo", "bar"); Object result = PropertyUtil.getProperty(configObject, "firstName"); assertNotNull(result); assertTrue(result instanceof String); assertEquals("foo", result); }
@Test public void testGetPropertyInvliadFieldName() throws Exception { Options configObject = new Options("foo", "bar"); Object result = PropertyUtil.getProperty(configObject, "first"); assertNull(result); }
@Test public void testGetPropertyWithNoReadMethod() throws Exception { Options configObject = new Options("foo", "bar"); Object result = PropertyUtil.getProperty(configObject, "notReadable"); assertNull(result); }