org.springframework.test.util
Class ReflectionTestUtils

java.lang.Object
  extended by org.springframework.test.util.ReflectionTestUtils

public class ReflectionTestUtils
extends Object

ReflectionTestUtils is a collection of reflection-based utility methods for use in unit and integration testing scenarios.

There are often times when it would be beneficial to be able to set a non-public field, invoke a non-public setter method, or invoke a non-public configuration or lifecycle callback method when testing code involving, for example:

Since:
2.5
Author:
Sam Brannen, Juergen Hoeller
See Also:
ReflectionUtils

Constructor Summary
ReflectionTestUtils()
           
 
Method Summary
static Object getField(Object target, String name)
          Get the field with the given name from the provided target object.
static Object invokeGetterMethod(Object target, String name)
          Invoke the getter method with the given name on the supplied target object with the supplied value.
static
<T> T
invokeMethod(Object target, String name, Object... args)
          Invoke the method with the given name on the supplied target object with the supplied arguments.
static void invokeSetterMethod(Object target, String name, Object value)
          Invoke the setter method with the given name on the supplied target object with the supplied value.
static void invokeSetterMethod(Object target, String name, Object value, Class<?> type)
          Invoke the setter method with the given name on the supplied target object with the supplied value.
static void setField(Object target, String name, Object value)
          Set the field with the given name on the provided target object to the supplied value.
static void setField(Object target, String name, Object value, Class<?> type)
          Set the field with the given name on the provided target object to the supplied value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReflectionTestUtils

public ReflectionTestUtils()
Method Detail

setField

public static void setField(Object target,
                            String name,
                            Object value)
Set the field with the given name on the provided target object to the supplied value.

This method traverses the class hierarchy in search of the desired field. In addition, an attempt will be made to make non-public fields accessible, thus allowing one to set protected, private, and package-private fields.

Parameters:
target - the target object on which to set the field
name - the name of the field to set
value - the value to set
See Also:
ReflectionUtils.findField(Class, String, Class), ReflectionUtils.makeAccessible(Field), ReflectionUtils.setField(Field, Object, Object)

setField

public static void setField(Object target,
                            String name,
                            Object value,
                            Class<?> type)
Set the field with the given name on the provided target object to the supplied value.

This method traverses the class hierarchy in search of the desired field. In addition, an attempt will be made to make non-public fields accessible, thus allowing one to set protected, private, and package-private fields.

Parameters:
target - the target object on which to set the field
name - the name of the field to set
value - the value to set
type - the type of the field (may be null)
See Also:
ReflectionUtils.findField(Class, String, Class), ReflectionUtils.makeAccessible(Field), ReflectionUtils.setField(Field, Object, Object)

getField

public static Object getField(Object target,
                              String name)
Get the field with the given name from the provided target object.

This method traverses the class hierarchy in search of the desired field. In addition, an attempt will be made to make non-public fields accessible, thus allowing one to get protected, private, and package-private fields.

Parameters:
target - the target object on which to set the field
name - the name of the field to get
Returns:
the field's current value
See Also:
ReflectionUtils.findField(Class, String, Class), ReflectionUtils.makeAccessible(Field), ReflectionUtils.setField(Field, Object, Object)

invokeSetterMethod

public static void invokeSetterMethod(Object target,
                                      String name,
                                      Object value)
Invoke the setter method with the given name on the supplied target object with the supplied value.

This method traverses the class hierarchy in search of the desired method. In addition, an attempt will be made to make non-public methods accessible, thus allowing one to invoke protected, private, and package-private setter methods.

In addition, this method supports JavaBean-style property names. For example, if you wish to set the name property on the target object, you may pass either "name" or "setName" as the method name.

Parameters:
target - the target object on which to invoke the specified setter method
name - the name of the setter method to invoke or the corresponding property name
value - the value to provide to the setter method
See Also:
ReflectionUtils.findMethod(Class, String, Class[]), ReflectionUtils.makeAccessible(Method), ReflectionUtils.invokeMethod(Method, Object, Object[])

invokeSetterMethod

public static void invokeSetterMethod(Object target,
                                      String name,
                                      Object value,
                                      Class<?> type)
Invoke the setter method with the given name on the supplied target object with the supplied value.

This method traverses the class hierarchy in search of the desired method. In addition, an attempt will be made to make non-public methods accessible, thus allowing one to invoke protected, private, and package-private setter methods.

In addition, this method supports JavaBean-style property names. For example, if you wish to set the name property on the target object, you may pass either "name" or "setName" as the method name.

Parameters:
target - the target object on which to invoke the specified setter method
name - the name of the setter method to invoke or the corresponding property name
value - the value to provide to the setter method
type - the formal parameter type declared by the setter method
See Also:
ReflectionUtils.findMethod(Class, String, Class[]), ReflectionUtils.makeAccessible(Method), ReflectionUtils.invokeMethod(Method, Object, Object[])

invokeGetterMethod

public static Object invokeGetterMethod(Object target,
                                        String name)
Invoke the getter method with the given name on the supplied target object with the supplied value.

This method traverses the class hierarchy in search of the desired method. In addition, an attempt will be made to make non-public methods accessible, thus allowing one to invoke protected, private, and package-private getter methods.

In addition, this method supports JavaBean-style property names. For example, if you wish to get the name property on the target object, you may pass either "name" or "getName" as the method name.

Parameters:
target - the target object on which to invoke the specified getter method
name - the name of the getter method to invoke or the corresponding property name
Returns:
the value returned from the invocation
See Also:
ReflectionUtils.findMethod(Class, String, Class[]), ReflectionUtils.makeAccessible(Method), ReflectionUtils.invokeMethod(Method, Object, Object[])

invokeMethod

public static <T> T invokeMethod(Object target,
                                 String name,
                                 Object... args)
Invoke the method with the given name on the supplied target object with the supplied arguments.

This method traverses the class hierarchy in search of the desired method. In addition, an attempt will be made to make non-public methods accessible, thus allowing one to invoke protected, private, and package-private methods.

Parameters:
target - the target object on which to invoke the specified method
name - the name of the method to invoke
args - the arguments to provide to the method
Returns:
the invocation result, if any
See Also:
MethodInvoker, ReflectionUtils.makeAccessible(Method), ReflectionUtils.invokeMethod(Method, Object, Object[]), ReflectionUtils.handleReflectionException(Exception)