2011-03-13 12 views
7

¿Dónde puedo encontrar un ejemplo de código simple, fácil de usar y fácil de probar en Android con ProviderTestCase2?Android - ejemplo de código para probar con ProviderTestCase2

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

Respuesta

5

Android lo usa internamente para probar sus proveedores. Para ejemplos, vea here y here. Google Code Search es ideal para esto :)

+0

Sí, eso es bastante bueno. En realidad es bastante fácil al final si tienes el ejemplo correcto;) – Henning

+2

enlaces están rotos ahora :-(. – harmanjd

+1

Supongo que se han actualizado desde el comentario de @ harmanjd, funcionan bien en este momento. – npace

1

Hay un ejemplo bastante bueno en el proyecto de ejemplo del Bloc de notas de Android SDK. Específicamente NotePadProviderTest. Solo asegúrese de tener los ejemplos instalados a través del administrador de SDK y listo.

+0

https: // android. googlesource.com/platform/development/+/master/samples/NotePad/tests/src/com/example/android/notepad/NotePadProviderTest.java –

9

En este ejemplo estoy probando un ContentProvider llamado 'DataLayer' que existe en la aplicación que se está probando; a continuación, comencé a probar la interfaz ContentProvider en una tabla llamada 'Usuario Activo'.

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"; 
} 
Cuestiones relacionadas