Android – ejemplo de código para la prueba con el ProviderTestCase2

¿Dónde puedo encontrar un ejemplo de código sencillo, funcional y sencillo para realizar pruebas en Android con ProviderTestCase2?

Lo mejor sería que un proyecto OpenSource lo utilizara realmente – por otro lado, en la complejidad de un proyecto real puede llegar a ser difícil realizar la funcionalidad real, así que cualquier buen ejemplo es bienvenido. Los documentos de Google Android no son muy específicos y no contienen ningún ejemplo adecuado.

Android lo usa internamente para probar a sus proveedores. Para ver ejemplos aquí y aquí . Google Code Search es ideal para estas cosas 🙂

En este ejemplo estoy probando un ContentProvider llamado 'DataLayer' que existe en la aplicación que se está probando; Abajo, he comenzado a probar la interfaz de ContentProvider a una tabla llamada 'ActiveUser'.

Si alguien sabe cómo usar newResolverWithContentProviderFromSql por favor ilumíname!

package com.example.android.app.test; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.provider.BaseColumns; import android.test.ProviderTestCase2; import android.test.mock.MockContentResolver; import android.util.Log; import com.example.android.app.Constants; import com.example.android.app.DataLayer; import com.example.android.app.provider.contract.ActiveUserContract; public class DataLayerTests extends ProviderTestCase2<DataLayer> { private static final String TAG = DataLayerTests.class.getSimpleName(); MockContentResolver mMockResolver; public DataLayerTests() { super(DataLayer.class, Constants.DATA_LAYER_AUTHORITY); } @Override protected void setUp() throws Exception { super.setUp(); Log.d(TAG, "setUp: "); mMockResolver = getMockContentResolver(); } @Override protected void tearDown() throws Exception { super.tearDown(); Log.d(TAG, "tearDown:"); } public void testActiveUserInsert__inserts_a_valid_record() { Uri uri = mMockResolver.insert(ActiveUserContract.CONTENT_URI, getFullActiveUserContentValues()); assertEquals(1L, ContentUris.parseId(uri)); } public void testActiveUserInsert__cursor_contains_valid_data() { mMockResolver.insert(ActiveUserContract.CONTENT_URI, getFullActiveUserContentValues()); Cursor cursor = mMockResolver.query(ActiveUserContract.CONTENT_URI, null, null, new String[] {}, null); assertNotNull(cursor); assertEquals(1, cursor.getCount()); assertTrue(cursor.moveToFirst()); assertEquals(VALID_USERNAME, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.USERNAME))); assertEquals(VALID_COMPANY_CODE, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.COMPANY_CODE))); assertEquals(VALID_COMPANY_LETTER, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.COMPANY_LETTER))); assertEquals(VALID_DRIVER_CODE, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.DRIVER_CODE))); assertEquals(VALID_SITE_NUMBER, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.SITE_NUMBER))); assertEquals(VALID_FIRST_NAME, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.FIRST_NAME))); assertEquals(VALID_SURNAME, cursor.getString(cursor.getColumnIndex(ActiveUserContract.Columns.SURNAME))); } public void testActiveUserInsert__throws_SQLiteConstraintException_when_NOT_NULL_constraint_not_met() { try { mMockResolver.insert(ActiveUserContract.CONTENT_URI, getActiveUserContentValuesWithNullCompanyCode()); fail("SQLiteConstraintException should have been thrown!"); } catch (SQLiteConstraintException e) { assertEquals("active_user.comp_code may not be NULL (code 19)", e.getMessage()); } } /** @return a ContentValues object with a value set for each ActiveUser column */ public static ContentValues getFullActiveUserContentValues() { ContentValues v = new ContentValues(7); v.put(ActiveUserContract.Columns.USERNAME, VALID_USERNAME); v.put(ActiveUserContract.Columns.COMPANY_CODE, VALID_COMPANY_CODE); v.put(ActiveUserContract.Columns.COMPANY_LETTER, VALID_COMPANY_LETTER); v.put(ActiveUserContract.Columns.DRIVER_CODE, VALID_DRIVER_CODE); v.put(ActiveUserContract.Columns.SITE_NUMBER, VALID_SITE_NUMBER); v.put(ActiveUserContract.Columns.FIRST_NAME, VALID_FIRST_NAME); v.put(ActiveUserContract.Columns.SURNAME, VALID_SURNAME); return v; } public static ContentValues getActiveUserContentValuesWithNullCompanyCode() { ContentValues v = new ContentValues(7); v.put(ActiveUserContract.Columns.USERNAME, VALID_USERNAME); v.putNull(ActiveUserContract.Columns.COMPANY_CODE); v.put(ActiveUserContract.Columns.COMPANY_LETTER, VALID_COMPANY_LETTER); v.put(ActiveUserContract.Columns.DRIVER_CODE, VALID_DRIVER_CODE); v.put(ActiveUserContract.Columns.SITE_NUMBER, VALID_SITE_NUMBER); v.put(ActiveUserContract.Columns.FIRST_NAME, VALID_FIRST_NAME); v.put(ActiveUserContract.Columns.SURNAME, VALID_SURNAME); return v; } private static final String VALID_SURNAME = "Brin"; private static final String VALID_FIRST_NAME = "Sergey"; private static final String VALID_SITE_NUMBER = "9"; private static final String VALID_DRIVER_CODE = "SergB201"; private static final String VALID_COMPANY_LETTER = "G"; private static final String VALID_COMPANY_CODE = "GOOGLE!"; private static final String VALID_USERNAME = "123456"; } 

Hay un buen ejemplo en el proyecto de ejemplo de Android SDK Notepad. Específicamente NotePadProviderTest. Sólo asegúrese de tener las muestras instaladas a través de la SDK mamanger y que está bien para ir.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.