I have a newly created android-18 app, with a PreferenceScreen
that's too obvious & simple to list.
And I also have an automated test [fixed to convert the questions into the answers].
public class MyPreferenceTest extends ActivityUnitTestCase<MyPreference> {
Intent intent;
MyPreference activity;
public MyPreferenceTest() {
super(MyPreference.class);
}
@Override
protected void setUp() throws Exception {
Context targetContext = getInstrumentation().getTargetContext();
intent = new Intent(targetContext, MyPreference.class);
super.setUp();
}
private void assembleActivity() {
startActivity(intent, null, null);
activity = getActivity();
}
private void assemblePreferences(String device, String userName, String password) {
Context targetContext = getInstrumentation().getTargetContext();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(targetContext);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("smart_phin_bluetooth_devices", device);
editor.putString("username", userName);
editor.putString("password", password);
editor.commit();
}
public void test_empty_userNames_dont_reflect_into_the_summary() {
assemblePreferences("", "", "");
assembleActivity();
activity.onResume();
EditTextPreference userName = (EditTextPreference) activity.findPreference("username"); // FIXME userName
assertEquals("", userName.getEditText().getText().toString());
assertEquals("", userName.getText());
assertEquals("Enter your user name", userName.getSummary().toString());
}
public void test_full_userNames_reflect_into_the_summary() {
assemblePreferences("", "BookerT", "");
assembleActivity();
activity.onResume(); // We must call this bc Android does but the test rig does not...
EditTextPreference userName = (EditTextPreference) activity.findPreference("username");
assertEquals("username", userName.getKey());
assertEquals("BookerT", String.valueOf(userName.getText().toString());
// assertEquals("BookerT", userName.getEditText().getText().toString());
assertEquals("BookerT", userName.getSummary().toString());
}
} // end of class MyPreferenceTest
The commented-out assertion would fail because nothing has invoked that EditText view yet.
The test now checks that new code in onResume() updates the Summary from generic verbiage to reflect the Preference's current value.