
More information at Droidcon London 2009
package com.codtech.android.training.mockcontext.examples; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView; public class MockContextExamplesActivity extends Activity { public final static String FILE_NAME = "myfile.txt"; private TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.TextView); final byte[] buffer = new byte[1024]; try { final FileInputStream fis = openFileInput(FILE_NAME); final int n = fis.read(buffer); tv.setText(new String(buffer, 0, n-1)); } catch (Exception e) { tv.setText(e.toString()); tv.setTextColor(Color.RED); } } public String getText() { return tv.getText().toString(); } } |
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import android.content.Context; import android.test.RenamingDelegatingContext; import android.util.Log; /** * @author diego * */ public class MyMockContext extends RenamingDelegatingContext { private static final String TAG = "MyMockContext"; private static final String MOCK_FILE_PREFIX = "test."; /** * @param context * @param filePrefix */ public MyMockContext(Context context) { super(context, MOCK_FILE_PREFIX); makeExistingFilesAndDbsAccessible(); } /* (non-Javadoc) * @see android.test.RenamingDelegatingContext#openFileInput(java.lang.String) */ @Override public FileInputStream openFileInput(String name) throws FileNotFoundException { Log.d(TAG, "actual location of " + name + " is " + getFileStreamPath(name)); return super.openFileInput(name); } /* (non-Javadoc) * @see android.test.RenamingDelegatingContext#openFileOutput(java.lang.String, int) */ @Override public FileOutputStream openFileOutput(String name, int mode) throws FileNotFoundException { Log.d(TAG, "actual location of " + name + " is " + getFileStreamPath(name)); return super.openFileOutput(name, mode); } } |
diego@bruce:\~$ adb shell echo "This is sample text" \ \> /data/data/com.codtech.android.training.mockcontext.examples/files/test.myfile.txt |
diego@bruce:\~$ adb shell echo "This is REAL text" \ \> /data/data/com.codtech.android.training.mockcontext.examples/files/myfile.txt |
import android.content.Context; import android.content.Intent; import android.test.ActivityUnitTestCase; import com.codtech.android.training.mockcontext.examples.MockContextExamplesActivity; /** * @author diego * */ public class MockContextExamplesTests extends ActivityUnitTestCase<MockContextExamplesActivity> { public MockContextExamplesTests() { super(MockContextExamplesActivity.class); } /** * @throws java.lang.Exception */ protected void setUp() throws Exception { } /** * @throws java.lang.Exception */ protected void tearDown() throws Exception { } public void testSampleTextDisplayed() { // mock context Context mockContext = new MyMockContext(getInstrumentation().getTargetContext()); setActivityContext(mockContext); startActivity(new Intent(), null, null); final MockContextExamplesActivity activity = getActivity(); assertNotNull(activity); assertEquals("This is sample text", activity.getText()); } public void testRealTextDisplayed() { // real context setActivityContext(getInstrumentation().getTargetContext()); startActivity(new Intent(), null, null); final MockContextExamplesActivity activity = getActivity(); assertNotNull(activity); assertFalse("This is sample text".equals(activity.getText())); } } |