Android自动化测试之路——Provider(一)

在这个组件的测试过程中,我们尝试了两种方式去获取数据库:

1、被测程序对外提供的ContentProvider接口;

2、通过Instrumentation的getTargetContext拿到的数据库列表,然后自定义一个SQLiteOpenHelper的子类去完成数据库的访问。

首先来说一下第一种方式的测试过程:

前提:要测试provider需要你知道被测程序提供出来的URIAUTHORITY

1、你需要新建一个测试类去继承ProviderTestCase2类,然后在测试类的无参构造函数中调用父类的构造方法super(Class providerClass, String providerAuthority);(当然最好是得有被测应用的源码,如果没有你得知道前提和provider类完整的包名。

2、需要你重写setup方法,在super.setup()后面开始写(这句是必须,因为它会完成MockContentResolver和IsolatedContext的初始化),如:

@Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();
        
        mMockResolver = getMockContentResolver();
        mProvider = mProviderClass.newInstance();
        assertNotNull(mProvider);
        
        mProvider.attachInfo(getContext(), null);
        mMockResolver.addProvider(mProviderAuthority, mProvider);
        
    }

你最好在重写getProvider这个方法来测试setup中是否成功创建的了被测的provider。完了之后的测试用例中就可以使用生成的mMockResolver来进行测试了。(最后别忘了测试的具体内容,上篇转的别人翻译官网的说明“Contentprovider测试”)

最终测试用例如:

public void testInsert(){
        ContentValues values = new ContentValues();
        
        values.put(NotePad.NoteColumns.TITLE, "测试标题");
        values.put(NotePad.NoteColumns.NOTE, "测试内容是什么");
        
        // insert
        //mMockResolver.insert(NotePad.NoteColumns.CONTENT_URI, values);
        
        String[] a = {"测试标题"};
        
        // query
        Cursor c = mMockResolver.query(NotePad.NoteColumns.CONTENT_URI, null, 
                NotePad.NoteColumns.TITLE + "=?",a, null);
        
        Log.d("Notepad", c.getCount()+"");
        
        while (c.moveToNext()) {
            Log.d("Notepad_insert", c.getString(c.getColumnIndex(NotePad.NoteColumns.NOTE)));
            Log.d("Notepad_insert", c.getString(c.getColumnIndex(NotePad.NoteColumns.NOTE)));
            assertEquals("测试标题", c.getString(c.getColumnIndex(NotePad.NoteColumns.TITLE)));
            assertEquals("测试内容是什么", c.getString(c.getColumnIndex(NotePad.NoteColumns.NOTE)));
        }
    
    }

 

转载于:https://www.cnblogs.com/xiao-kkp/p/4123862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值