类 ReflectionTestUtils
- java.lang.Object
- org.springframework.test.util.ReflectionTestUtils
public abstract 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:- ORM frameworks such as JPA and Hibernate which condone the usage of
private
orprotected
field access as opposed topublic
setter methods for properties in a domain entity. - Spring's support for annotations such as
@Autowired
,@Inject
, and@Resource
which provides dependency injection forprivate
orprotected
fields, setter methods, and configuration methods. - Use of annotations such as
@PostConstruct
and@PreDestroy
for lifecycle callback methods.
In addition, several methods in this class provide support for
static
fields — for example,setField(Class, String, Object)
,getField(Class, String)
, etc.- 从以下版本开始:
- 2.5
- 作者:
- Sam Brannen, Juergen Hoeller
- 另请参阅:
ReflectionUtils
,AopTestUtils
- ORM frameworks such as JPA and Hibernate which condone the usage of
构造器概要
构造器 构造器 说明 ReflectionTestUtils()
方法概要
所有方法 静态方法 具体方法 修饰符和类型 方法 说明 static Object
getField(Class<?> targetClass, String name)
static Object
getField(Object targetObject, Class<?> targetClass, String name)
static Object
getField(Object targetObject, String name)
static Object
invokeGetterMethod(Object target, String name)
Invoke the getter method with the givenname
on the supplied target object with the suppliedvalue
.static <T> T
invokeMethod(Object target, String name, Object... args)
Invoke the method with the givenname
on the supplied target object with the supplied arguments.static void
invokeSetterMethod(Object target, String name, Object value)
Invoke the setter method with the givenname
on the supplied target object with the suppliedvalue
.static void
invokeSetterMethod(Object target, String name, Object value, Class<?> type)
Invoke the setter method with the givenname
on the supplied target object with the suppliedvalue
.static void
setField(Class<?> targetClass, String name, Object value)
static void
setField(Class<?> targetClass, String name, Object value, Class<?> type)
static void
setField(Object targetObject, Class<?> targetClass, String name, Object value, Class<?> type)
Set the field with the givenname
/type
on the providedtargetObject
/targetClass
to the suppliedvalue
.static void
setField(Object targetObject, String name, Object value)
static void
setField(Object targetObject, String name, Object value, Class<?> type)
构造器详细资料
ReflectionTestUtils
public ReflectionTestUtils()
方法详细资料
setField
public static void setField(Object targetObject, String name, Object value)
Set the field with the givenname
on the providedtargetObject
to the suppliedvalue
.This method delegates to
setField(Object, String, Object, Class)
, supplyingnull
for thetype
argument.- 参数:
targetObject
- the target object on which to set the field; nevernull
name
- the name of the field to set; nevernull
value
- the value to set
setField
public static void setField(Object targetObject, String name, Object value, Class<?> type)
Set the field with the givenname
/type
on the providedtargetObject
to the suppliedvalue
.This method delegates to
setField(Object, Class, String, Object, Class)
, supplyingnull
for thetargetClass
argument.- 参数:
targetObject
- the target object on which to set the field; nevernull
name
- the name of the field to set; may benull
iftype
is specifiedvalue
- the value to settype
- the type of the field to set; may benull
ifname
is specified
setField
public static void setField(Class<?> targetClass, String name, Object value)
Set the static field with the givenname
on the providedtargetClass
to the suppliedvalue
.This method delegates to
setField(Object, Class, String, Object, Class)
, supplyingnull
for thetargetObject
andtype
arguments.- 参数:
targetClass
- the target class on which to set the static field; nevernull
name
- the name of the field to set; nevernull
value
- the value to set- 从以下版本开始:
- 4.2
setField
public static void setField(Class<?> targetClass, String name, Object value, Class<?> type)
Set the static field with the givenname
/type
on the providedtargetClass
to the suppliedvalue
.This method delegates to
setField(Object, Class, String, Object, Class)
, supplyingnull
for thetargetObject
argument.- 参数:
targetClass
- the target class on which to set the static field; nevernull
name
- the name of the field to set; may benull
iftype
is specifiedvalue
- the value to settype
- the type of the field to set; may benull
ifname
is specified- 从以下版本开始:
- 4.2
setField
public static void setField(Object targetObject, Class<?> targetClass, String name, Object value, Class<?> type)
Set the field with the givenname
/type
on the providedtargetObject
/targetClass
to the suppliedvalue
.If the supplied
targetObject
is a proxy, it will be unwrapped allowing the field to be set on the ultimate target of the proxy.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 setprotected
,private
, and package-private fields.- 参数:
targetObject
- the target object on which to set the field; may benull
if the field is statictargetClass
- the target class on which to set the field; may benull
if the field is an instance fieldname
- the name of the field to set; may benull
iftype
is specifiedvalue
- the value to settype
- the type of the field to set; may benull
ifname
is specified- 从以下版本开始:
- 4.2
- 另请参阅:
ReflectionUtils.findField(Class, String, Class)
,ReflectionUtils.makeAccessible(Field)
,ReflectionUtils.setField(Field, Object, Object)
,AopTestUtils.getUltimateTargetObject(Object)
getField
public static Object getField(Object targetObject, String name)
Get the value of the field with the givenname
from the providedtargetObject
.This method delegates to
getField(Object, Class, String)
, supplyingnull
for thetargetClass
argument.- 参数:
targetObject
- the target object from which to get the field; nevernull
name
- the name of the field to get; nevernull
- 返回:
- the field's current value
- 另请参阅:
getField(Class, String)
getField
public static Object getField(Class<?> targetClass, String name)
Get the value of the static field with the givenname
from the providedtargetClass
.This method delegates to
getField(Object, Class, String)
, supplyingnull
for thetargetObject
argument.- 参数:
targetClass
- the target class from which to get the static field; nevernull
name
- the name of the field to get; nevernull
- 返回:
- the field's current value
- 从以下版本开始:
- 4.2
- 另请参阅:
getField(Object, String)
getField
public static Object getField(Object targetObject, Class<?> targetClass, String name)
Get the value of the field with the givenname
from the providedtargetObject
/targetClass
.If the supplied
targetObject
is a proxy, it will be unwrapped allowing the field to be retrieved from the ultimate target of the proxy.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 getprotected
,private
, and package-private fields.- 参数:
targetObject
- the target object from which to get the field; may benull
if the field is statictargetClass
- the target class from which to get the field; may benull
if the field is an instance fieldname
- the name of the field to get; nevernull
- 返回:
- the field's current value
- 从以下版本开始:
- 4.2
- 另请参阅:
getField(Object, String)
,getField(Class, String)
,ReflectionUtils.findField(Class, String, Class)
,ReflectionUtils.makeAccessible(Field)
,ReflectionUtils.getField(Field, Object)
,AopTestUtils.getUltimateTargetObject(Object)
invokeSetterMethod
public static void invokeSetterMethod(Object target, String name, Object value)
Invoke the setter method with the givenname
on the supplied target object with the suppliedvalue
.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 invokeprotected
,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.- 参数:
target
- the target object on which to invoke the specified setter methodname
- the name of the setter method to invoke or the corresponding property namevalue
- the value to provide to the setter method- 另请参阅:
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 givenname
on the supplied target object with the suppliedvalue
.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 invokeprotected
,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.- 参数:
target
- the target object on which to invoke the specified setter methodname
- the name of the setter method to invoke or the corresponding property namevalue
- the value to provide to the setter methodtype
- the formal parameter type declared by the setter method- 另请参阅:
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 givenname
on the supplied target object with the suppliedvalue
.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 invokeprotected
,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.- 参数:
target
- the target object on which to invoke the specified getter methodname
- the name of the getter method to invoke or the corresponding property name- 返回:
- the value returned from the invocation
- 另请参阅:
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 givenname
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 invokeprotected
,private
, and package-private methods.- 参数:
target
- the target object on which to invoke the specified methodname
- the name of the method to invokeargs
- the arguments to provide to the method- 返回:
- the invocation result, if any
- 另请参阅:
MethodInvoker
,ReflectionUtils.makeAccessible(Method)
,ReflectionUtils.invokeMethod(Method, Object, Object[])
,ReflectionUtils.handleReflectionException(Exception)