content: package com.fernandocejas.InstrumentationSample.tests.ui;
  
  import android.app.Instrumentation.ActivityMonitor;
  import android.test.ActivityInstrumentationTestCase2;
  import android.test.ViewAsserts;
  import android.test.mock.MockContext;
  import android.test.mock.MockResources;
  import android.widget.Button;
  import android.widget.RelativeLayout;
  import android.widget.TextView;
  
  import com.fernandocejas.InstrumentationSample.R;
  import com.fernandocejas.InstrumentationSample.R.id;
  import com.fernandocejas.InstrumentationSample.ui.MainActivity;
  import com.fernandocejas.InstrumentationSample.ui.OtherActivity;
  
  /**
   * This is a simple framework for a test of an Application.  See
   * {@link android.test.ApplicationTestCase ApplicationTestCase} for more information on
   * how to write and extend Application tests.
   * <p/>
   * To run this test, you can type:
   * adb shell am instrument -w \
   * -e class com.fernandocejas.InstrumentationSample.ui.MainActivityTest \
   * com.fernandocejas.InstrumentationSample.tests/android.test.InstrumentationTestRunner
   */
  public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
  
  	private MainActivity mainActivity;
  
  	public MainActivityTest() {
  		super("com.fernandocejas.InstrumentationSample", MainActivity.class);
  	}
  
  	@Override
  	protected void setUp() throws Exception {
  		super.setUp();
  
  		mainActivity = getActivity();
  	}
  
  	public void testHelloWorldText() {
  		TextView textView = (TextView)mainActivity.findViewById(id.tv_title);
  
  		String actualValue = textView.getText().toString();
  
  		assertEquals("GDG", actualValue);
  	}
  
  	public void testTextViewPosition() {
  		RelativeLayout relativeLayoutContainer = (RelativeLayout)mainActivity.findViewById(R.id.rl_container);
  
  		TextView textViewTitle = (TextView)mainActivity.findViewById(R.id.tv_title);
  		TextView textViewDescription = (TextView)mainActivity.findViewById(R.id.tv_description);
  
  		ViewAsserts.assertGroupContains(relativeLayoutContainer, textViewTitle);
  		ViewAsserts.assertGroupContains(relativeLayoutContainer, textViewDescription);
  	}
  
  	public void testFakeMethod() {
  		MockContext mockContext = new MockContext();
  
  		int actualValue = mainActivity.fakeMethod(mockContext);
  
  		assertEquals(1, actualValue);
  	}
  
  	public void testGetStringResource() {
  		MockResources mockResources = new MyMockResources();
  
  		String actual = mainActivity.getStringResource(mockResources);
  
  		assertEquals("string", actual);
  	}
  
  	public void testLaunchActivity() {
  		//register next activity that need to be monitored
  		ActivityMonitor activityMonitor = getInstrumentation().addMonitor(OtherActivity.class.getName(), null, false);
  
  		//open current activity
  		final Button button = (Button)mainActivity.findViewById(R.id.bt_launch);
  		mainActivity.runOnUiThread(new Runnable() {
  			@Override
  			public void run() {
  				button.performClick();
  			}
  		});
  
  		// let's wait to open the activity
  		OtherActivity otherActivity = (OtherActivity)getInstrumentation().waitForMonitor(activityMonitor);
  
  		// next activity is opened and captured.
  		assertNotNull(otherActivity);
  		otherActivity.finish();
  	}
  
  	private static class MyMockResources extends MockResources {
  		@Override
  		public String getString(int id) throws NotFoundException {
  			return "string";
  		}
  	}
  }
  