Android - 使用ProviderTestCase2进行测试的代码示例

Hen*_*ing 7 android

在哪里可以找到一个简单,有效且简单的代码示例,用于在Android上使用ProviderTestCase2进行测试?

最好的是实际使用它的OpenSource项目 - 另一方面,在实际项目的复杂性中,很难实现实际的功能,所以任何好的例子都是受欢迎的.谷歌Android文档不是非常具体,没有适当的例子.

fr1*_*50n 9

在这个例子中,我正在测试一个名为'DataLayer'的ContentProvider,它存在于正在测试的应用程序中; 下面,我开始测试ContentProvider接口到名为'ActiveUser'的表.

如果有人知道如何使用newResolverWithContentProviderFromSql 请赐教!

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";
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*ong 6

Android在内部使用它来测试其提供商.有关示例,请参阅此处此处. 谷歌代码搜索非常适合这些东西:)

  • 链接现在破了:-(. (2认同)