隨着支持庫v4的更新從22.2.0更新爲23.0.0版本,mActivity
字段已進入Fragment.java類。從我所看到的,它似乎是由mHost
有型FragmentHostCallback
更換(抽象的,實施是HostCallbacks
,嵌套在FragmentActivity
)如何將活動設置爲ApplicationTestCase中的片段 - NoSuchFieldException:SupportLibrary v4-23.0.0中的mActivity
我大量使用單元測試測試我的所有片段。之前,我在測試類的構造函數中創建了新的Activity(它擴展了AbstractApplicationTest
),做了一些調整(如附加上下文等)。然後通過反射設置這一新的活動作爲片段的活動我想測試:
protected void setFragmentActivity(final Fragment fragment) throws NoSuchFieldException, IllegalAccessException {
final Field field = Fragment.class.getDeclaredField("mActivity");
field.setAccessible(true);
field.set(fragment, activity);
}
現在,mActivity
不再存在。
爲什麼它很重要:當我正在測試的片段在沒有此設置的情況下調用getActivity()
時,我得到null,因爲片段實際上沒有任何活動。
任何想法如何解決? 祝您有個美好的一天, Konstantin