title: ActivityUnitTestCase vs PreferenceScreen
body: <p>I have a newly created android-18 app, with a <code>PreferenceScreen</code> that's too obvious &amp; simple to list.</p>
  
  <p>And I also have an automated test [fixed to convert the questions into the answers].</p>
  
  <pre><code>public class MyPreferenceTest extends ActivityUnitTestCase&lt;MyPreference&gt; {  
      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
  </code></pre>
  
  <p>The commented-out assertion would fail because nothing has invoked that EditText view yet.</p>
  
  <p>The test now checks that new code in onResume() updates the Summary from generic verbiage to reflect the Preference's current value.</p>