2011-03-13 11 views
7

Gdzie mogę znaleźć prosty, działający i łatwy przykład kodu do testowania na Androidzie za pomocą ProviderTestCase2?Android - przykład kodu do testowania za pomocą ProviderTestCase2

Najlepszy byłby projekt OpenSource, który faktycznie go używa - z drugiej strony, w złożoności prawdziwego projektu może być trudno zrealizować faktyczną funkcjonalność, więc każdy dobry przykład jest mile widziany. Dokumenty Google Android nie są bardzo szczegółowe i nie zawierają właściwego przykładu.

Odpowiedz

5

Android używa go wewnętrznie do testowania dostawców. Przykłady: patrz here i here. Google Code Search jest świetny do tego rodzaju rzeczy :)

+0

tak, to jest całkiem dobre. Właściwie to całkiem proste w końcu, jeśli masz odpowiedni przykład;) – Henning

+2

linki są teraz zepsute :-( – harmanjd

+1

Sądzę, że zostały zaktualizowane od czasu komentarza @ harmanjd, w tej chwili działają dobrze – npace

1

Jest całkiem dobry przykład w przykładowym projekcie Android SDK Notepad. W szczególności NotePadProviderTest. Po prostu upewnij się, że masz próbki zainstalowane za pośrednictwem SDK mamanger i jesteś gotowy.

+0

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

9

W tym przykładzie testuję dostawcę treści o nazwie "DataLayer", który istnieje w testowanej aplikacji; poniżej, zacząłem testować interfejs ContentProvider w tabeli o nazwie "ActiveUser".

Jeśli ktoś wie, jak korzystać z newResolverWithContentProviderFromSql proszę oświecić mnie!

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"; 
} 
Powiązane problemy