public class

ReflectionTestUtils

extends Object
java.lang.Object
   ↳ org.springframework.test.util.ReflectionTestUtils

Class Overview

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 javax.annotation.Resource @Resource which provides dependency injection for private or protected fields, setter methods, and configuration methods.

See Also

Summary

Public Constructors
ReflectionTestUtils()
Public Methods
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, Class<?> type)
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)
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 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 field with the given name on the provided target object to the supplied value.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public ReflectionTestUtils ()

Public Methods

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

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

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

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

public static void setField (Object target, String name, Object value)

Set the Field 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

public static void setField (Object target, String name, Object value, Class<?> type)

Set the Field 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)