我正在尝试测试使用两个不同的PreferenceFragments的PreferenceActivity。 我使用以下意图启动活动:
public static Intent getActivityIntent(Context context, Mode mode){
Intent intent = new Intent(context, MyPreferencesActivity.class);
intent.putExtra( PreferenceActivity.EXTRA_SHOW_FRAGMENT, getMainFragmentName(mode));
intent.putExtra( PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, getMainFragmentArguments(mode));
intent.putExtra( PreferenceActivity.EXTRA_NO_HEADERS, true );
return intent;
}
getMainFragmentName和getMainFragmentArguments根据模式返回不同的片段和参数。
现在,我的问题是当我像下面这样使用robolectric启动活动时:
Robolectric.buildActivity(MyPreferencesActivity.class)
.withIntent(MyPreferencesActivity.getActivityIntent(Robolectric.application,
MyPreferencesActivity.Mode.FULL))
.attach()
.create()
.postCreate(null)
.start()
.resume()
.get();
我不知道如何确保正确的片段已经创建。当我调试代码时,似乎没有创建任何片段。上面的代码不应该足以创建片段吗?
我尝试使用PreferenceActivity的阴影并进行了测试:
assertNotNull(shadowPreferenceActivity.getPreferencesScreen());
但是它失败了。
这段代码在我的应用程序中完美运行,正确的片段被创建并添加。