## org.springframework.test.util
Class ReflectionTestUtils

    java.lang.Object
      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 situations in which it would be beneficial to be able to set a non-`public` field or invoke a non-`public` setter method when testing code involving, for example:

- ORM frameworks such as JPA and Hibernate which condone the usage of `private` or `protected` field access as opposed to `public` setter methods for properties in a domain entity.
- Spring's support for annotations such as `@Autowired` and `@Resource` which provides dependency injection for `private` or `protected` fields, setter methods, and configuration methods.

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 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[])`

Copyright © 2002-2008 The Spring Framework.