使用 Robolectric 测试 DialogFragments
Posted
技术标签:
【中文标题】使用 Robolectric 测试 DialogFragments【英文标题】:Testing DialogFragments with Robolectric 【发布时间】:2012-10-15 14:04:16 【问题描述】:我有几个关于使用 Robolectric 测试 DialogFragment
课程的问题,因为我在 Internet 上遇到了关于这个主题的完全缺乏信息。
-
传递给
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
的正确参数是什么?
我无法将参数传递给DialogFragment
,我正在使用以下方法:
activity = new Activity();
dialog = new DialogFragment();
Bundle bundle = new Bundle();
dialog.setArguments(bundle);
FragmentManager fm = activity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(dialog, "fragment");
ft.commit();
每当代码尝试访问参数时,它都会以NullPointerException
崩溃。
非常感谢有关这些主题的任何想法。
【问题讨论】:
能否为您的 DialogFragment 类添加代码?您不使用 DialogFragment#show() 是否有原因?该文档显示了您应该如何扩展 DialogFragment 以创建自己的自定义对话框:developer.android.com/reference/android/app/DialogFragment.html 你解决了吗? @Egor,你解决了吗? 【参考方案1】:您使用的DialogFragment
错误。您不应该提交片段,而是在DialogFragment
上调用show
。
activity = new Activity();
dialog = new DialogFragment();
Bundle bundle = new Bundle();
dialog.setArguments(bundle);
FragmentManager fm = activity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
dialog.show(ft, "fragment");
【讨论】:
show() 做了几乎相同的事情 - 将 DialogFragment 添加到事务并提交它。以上是关于使用 Robolectric 测试 DialogFragments的主要内容,如果未能解决你的问题,请参考以下文章
如何使用robolectric对Android音频录制应用进行单元测试