單元測試中使用Spring的ReflectionTestUtils更方便


1 簡介

ReflectionUtilsSpring中一個常用的類,屬於spring-core包;ReflectionTestUtils則屬於spring-test包。兩者功能有重疊的地方,而ReflectionUtils會更強大。在單元測試時使用ReflectionTestUtils,能增加我們的便利性。

假設我們需要創建一個類,但它的某些成員變量是私有的,並且沒有提供公共的setter方法,而我們無法按照它的正常初始化流程來使它的這些成員變量是我們想要的值。這時就需要想辦法修改一個類的私有變量,而反射可以幫助到我們。Spring也提供了反射相關的工具類:ReflectionUtilsReflectionTestUtils,這里只介紹ReflectionTestUtils的常用功能。

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是一個小工具類,需要用到的時候,自然會感受到它的益處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM