随着支持库v4从22.2.0更新到23.0.0版本,mActivity
字段已经进入Fragment.java类。从我看到的,似乎被mHost
替换为类型为FragmentHostCallback
(抽象,实现为HostCallbacks
,嵌套在FragmentActivity
)
我正在通过单元测试对我的所有片段进行大量测试。之前,我在测试类的构造函数中创建了新的Activity(扩展了AbstractApplicationTest
),做了一些调整(比如附加上下文等)。然后通过反射将这个新的Activity设置为我想要测试的片段的活动:
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,因为片段确实没有活动。
任何想法如何才能成功? 祝你有个美好的一天, 康斯坦丁
答案 0 :(得分:0)
请在此处找到有关它的完整文章: Unit Test an Android Fragment