ContentProviderTest

源码下载(免下载积分):下载

Content Provider 用在应用程序间的数据的存储和检索,这个是对如何利用android的测试包来对Content Provider进行测试。

 
  测试Content Provider的测试用例类是 ProviderTestCase2,这个类可以使得content
provider处于孤立的环境中,利用Mock类(例如IsolatedContext
and  MockContentResolver)来测试。和其它测试一样,provider的测试包也运行在InstrumentationTestRunner的控制之下

Content
Provider测试API

ProviderTestCase2: 这个类继承了类,这个最重要的特点是创建孤立的测试环境,

Mock object 类:ProviderTestCase2使用了IsolatedContext
and MockContentResolver,这两个类是标准的mock类

测试案例:

1. 继承ProviderTestCase2
public class DictionaryProviderTest
            extends ProviderTestCase2<DictionaryProveder>{

2. 添加构造函数

    private MockContentResolver mResolver;
    /*
     * 构造函数所做的事情;
     *  1. 创建IsolatedContext,用于文件和数据库的操作
     *  2. 创建MockContentResolver
     *  3. 实例化provider
     */
    public DictionaryProviderTest()
    {
        super(DictionaryProveder.class,DictionaryProveder.AUTHORITY);
        // TODO Auto-generated constructor stub
    }
3. 添加setUp()方法和先验测试

    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();
        //获取MockContentResolver对象
        mResolver = this.getMockContentResolver();
    }
    //先验测试
    public void testPrecondtions()
    {
        assertNotNull(mResolver);
    }
3. 测试provider的检索

    //测试ContentProvider的
    public void testContentProviderQuery()
    {
        Uri uri = Uri.parse
            ("content://com.example.mydictionary.DictionaryProveder/words/");
        String[] projection = {DictionaryOpenHelper.DictionaryEntry.COLUMN_WORD
                ,DictionaryOpenHelper.DictionaryEntry.COLUMN_DEFINATION};
        Cursor cursor = mResolver.query(uri, projection, null, null, null);
        assertNotNull(cursor);
        cursor.moveToFirst();
        if (cursor.moveToNext()) {
            assertEquals(2,cursor.getColumnCount());
            assertEquals("abbey", cursor.getString(0));
            assertEquals("n. a monastery ruled by an abbot", cursor.getString(1));
        }
    }

}

这个测试可以说是为了测试而测试。

怎么如何规范的测试呢?

  • 使用resolver的方法进行测试
  • 测试provider提供的方法或变量 
    • provider所提供的可被应用程序访问的常量等,例如列名,
    • 测试所有的URIs
    • 测试无效的URIs
  • 测试provider的所有方法,大多数provider提供了六个常规的方法,query, insert, delete, 

    update, getType, and onCreate(),确保所有的方法都能够正常工作,

对于标准的测试案例可以看android sdk->samples->NotesList的例子

参考资料:

http://developer.android.com/tools/testing/contentprovider_testing.html

http://matthewtyler.io/testing-content-providers-android-programming/

ContentProviderTest,布布扣,bubuko.com

时间: 2024-09-29 07:49:58

ContentProviderTest的相关文章

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式.非常多小伙伴都问我.为什么不把我制作的插件放到Github上,让大家共享一下. 我仅仅能说.大哥啊,这个插件是我在公司研发的时候制作的,商业机密.不能开源啊. 刚好.近期逛

ContentObserver的使用完整详细示例

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Android 测试 Appium、Robotium、monkey等框架或者工具对比

1. Appium测试 (功能测试,用户接受度测试,黑盒测试) - Rating: 8 Website: http://appium.io/ Appium测试相当于黑盒测试.只是测试UI逻辑正确性.所以Appium测试框架提供的方法有限.获取一个AppiumDriver对象.该对象只是有很多findElements()的方法,获取到UI元素.UI元素是WebElement,这个类提供的方法基本是获取信息为主,比如获取name,class,tagName,location,text,isSlect

Android插件实例——360 DroidPlugin详解

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比如我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意很好.新浪一收购GOOGLE,是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与运行方式.很多小伙伴都问我,为什么不把我制作的插件放到Github上,让大家共享一下. 我只能说,大哥啊,这个插件是我在公司研发的时候制作的,商业机密,不能开源啊. 刚好,最近逛git

ContentProvider的理解与使用

ContentProvider管理android以结构化方式存放的数据.他以相对安全的方式封装数据并且提供简易的处理机制.Content provider提供不同进程间数据交互的标准化接口. 本文结构: 1.Content Provider简介,Uri简介,使用ContentResolver进行操作 2.开发自己的ContentProvider继承类 3.系统的ContentProvider 4.监听ContentProvider相关的数据变化(ContentObserver类) Content

Android开发学习之路--Content Provider之初体验

天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下第三个android的组件,Content Provider内容提供器. Content Provider向我们提供了在不同应用程序之间的数据共享,比如微信啊,支付宝啊,想要获取手机联系人的信息,而手机联系人是另一个应用程序,那么这时候就需要用到Content Provider了.Content P

转:Android 测试 Appium、Robotium、monkey等框架或者工具对比

原文地址:http://demo.netfoucs.com/u012565107/article/details/36419297# 1. Appium测试 (功能测试,用户接受度测试,黑盒测试) - Rating: 8 Website: http://appium.io/ Appium测试相当于黑盒测试.只是测试UI逻辑正确性.所以Appium测试框架提供的方法有限.获取一个AppiumDriver对象.该对象只是有很多findElements()的方法,获取到UI元素.UI元素是WebEle

Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容

一.什么是ContentProvider? ContentProvider直译过来就是内容提供者,主要作用就是A应用提供接口给B应用调用数据,和之前介绍的sharedPreference和直接开放文件访问类似,都是共享应用程序数据,不同的是之前的两种文件格式可能完全不同,如可能为xml,txt,sql等等,这里ContentProvider返回的数据格式是统一的,因此应用的更为广泛一点. 二.实例 这里使用的是A应用通过ContentProvider共享数据给B应用.这里A应用用的是前文中的an

使用ContentProvider进行应用程序间的数据交互

什么是ContentProvider: ContentProvider用来管理数据的访问规则.它允许你的应用程序向外界暴露需要被访问的数据. 是Android的四大组件之一. ContentProviders支持四种基本的操作,即我们平时所见到的CRUD操作(增删改查).Android系统 本身已经提供了一些内容提供者,它们允许我们查询联系人,媒体库,和短息消息等. 基于Content Uri的查询: 没有Uri,ContentProvider 类基本无法工作,就像我们上网没有网址.当我们要上网