Cómo utilizar simulacros para probar archivos, bases de datos y proveedores de contenido
Para ver ejemplos, consulte: D:\workspace\MockTest
************************MockContextExampleActivity **** ****
paquete com.example.mocktest;
importar java.io.FileInputStream;
importar android.app.Activity;
importar android.graphics.Color;
importar android.os.Bundle;
importar android.view.Menu;
importar android.widget.TextView;
clase pública MockContextExampleActivity extiende la actividad {
cadena estática final pública FILE_NAME = "myfile.txt";
TextView privado mTv;
@Override
protected void onCreate(Bundle saveInstanceState) {
super.MockContextExampleActivity Extensiones ActivityonCreate(savedInstanceState);
setContentView(R. layout.main) ;
mTv = (TextView) findViewById(R.id. text1);
Anular
proected void onCreate(Bundle saveInstanceState) {
super.text1);
byte final[] buffer = nuevo byte[1024];
prueba {
FileInputStream final fis = openFileInput( FILE_NAME) ;
final int n = fis.read(buffer);
mTv.setText(new String(buffer, 0, n-1));
}
catch (Excepción e) {
mTv.setText(e.toString());
mTv.setTextColor(Color.RED );
p>
}
}
// Escriba aquí un método getText que será utilizado por el proyecto de prueba.
cadena pública getText() {
return mTv.getText().toString();
}
@Override p>
public boolean onCreateOptionsMenu (menú menú) {
// Inflar el menú; esto agrega elementos a la barra de acciones si está presente.
getMenuInflater().inflate (R.menu.mock_context_example, menú);
devuelve verdadero;
}
}
******* **********MockContextExampleTest************************
paquete com.
clase pública MockContextExampleTest extiende ActivityUnitTestCase
cadena final estática privada PREFIX = "prueba.";
RenamingDelegatingContext privado mMockContext;
MockContextExampleTest público ( ) {
super(MockContextExampleActivity.class);
}
@Override
protected void setUp() lanza una excepción { p>
super. setUp();
mMockContext = new RenamingDelegatingContext(getInstrumentation().getTargetContext(), PREFIX);
mMockContext.makeExistingFilesAndDbsAccessible();
}
p>@Override
el vacío protegido tearDown() lanza una excepción {
super.setUp();
mMockContext = new RenamingDelegatingContext(getInrumentation() .tearDown();
}
prueba de vacío públicoSampleTextDisplayed(){
setActivityContext(mMockContext);
startActivity( new Intent( ), null, null);
final MockContextExampleActivity mActivity = getActivity();
assertNotNull(mActivity);
String text = mActivity.getText();
assertEquals("Estos son datos *MOCK*", texto);
}
}
No nulo
(mActivity);
String text = mActivity.test.InstrumentationTestRunner"
android:targetPackage="com.example.mocktest"/>
Se utiliza la función RenamingDelegatingContext, PREFIJO is Indica el prefijo del archivo o base de datos
Además, aquí se usa el método getTargetContext en lugar de getContext, que es el que usamos a menudo en UiTest. Esto se entiende a través de comentarios:
//getContext(): El contexto del paquete del instrumento
//getTargetContext():
Ejecuta la prueba y pasa. el método getText ya son datos * MOCK *, no datos reales. Esto demuestra que el desarrollador no codificó el texto. Lo anterior es cómo la función RenamingDelegatingContext simula el archivo, y lo mismo ocurre con el uso de la base de datos.