Red de conocimiento informático - Material del sitio web - Cómo utilizar simulacros para probar archivos, bases de datos y proveedores de contenido

Cómo utilizar simulacros para probar archivos, bases de datos y proveedores de contenido

A veces necesitamos probar un archivo o base de datos sin destruir los datos originales de la aplicación o dispositivo. En este caso, necesitamos un Mock para reemplazarlos. El simulacro aquí no es android.test.mock, sino la clase RenamingDelegatingContext en el paquete android.test.

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

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 {

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.