单元测试中使用Spring的ReflectionTestUtils更方便

1 简介

ReflectionUtilsSpring中一个经常使用的类,属于spring-core包;ReflectionTestUtils则属于spring-test包。二者功能有重叠的地方,而ReflectionUtils会更强大。在单元测试时使用ReflectionTestUtils,能增长咱们的便利性。java

假设咱们须要建立一个类,但它的某些成员变量是私有的,而且没有提供公共的setter方法,而咱们没法按照它的正常初始化流程来使它的这些成员变量是咱们想要的值。这时就须要想办法修改一个类的私有变量,而反射能够帮助到咱们。Spring也提供了反射相关的工具类:ReflectionUtilsReflectionTestUtils,这里只介绍ReflectionTestUtils的经常使用功能。spring

2 三类主要方法

获取对象的成员变量:工具

public static Object getField(@Nullable Object targetObject, String name)

给对象注入成员变量:单元测试

public static void setField(Class<?> targetClass, String name, @Nullable Object value)

调用成员方法:测试

public static <T> T invokeMethod(Object target, String name, Object... args)

3 总结

ReflectionTestUtils是一个小工具类,须要用到的时候,天然会感觉到它的益处。code

相关文章
相关标签/搜索