首页 > 代码库 > ContentProviderTest
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(),确保所有的方法都能够正常工作,
参考资料:
http://developer.android.com/tools/testing/contentprovider_testing.html
http://matthewtyler.io/testing-content-providers-android-programming/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。