Android官方的解释是:Extend this if you need to access Resources or other things that depend on Activity Context.,如果你需要用到资源或者Activity Content,可以继承这个类进行单元测试。

我们这里拿Android中例子 “NotePad” 中的Content Provider来做测试。

首先是建立一个针对NotePad项目的测试项目,方法如我们的单元测试第一篇。

这里新建一个类叫TestNotePadProvider,下面是代码

package com.example.android.notepad.test;import com.google.provider.NotePad;import android.content.ContentResolver;import android.content.ContentValues;import android.database.Cursor;import android.net.Uri;import android.test.AndroidTestCase;public class TestNotePadProvider extends AndroidTestCase{ContentResolver mContentResolver;    @Overrideprotected void setUp() throws Exception {super.setUp();//AndroidTestCase 中核心的就是getContext(),可以得到一个模拟的contextmContentResolver = getContext().getContentResolver();}public void testInsertData() {ContentValues values = new ContentValues();values.put(NotePad.Notes.TITLE, "title1");values.put(NotePad.Notes.NOTE, "body");Uri uri = NotePad.Notes.CONTENT_URI;Uri resultUri = mContentResolver.insert(uri, values);//测试是否真的插入数据了assertNotNull(resultUri);//测试完删除所有数据mContentResolver.delete(uri, NotePad.Notes.TITLE + "=" + "'title1'", null);}    public void testDeleteData() {    Uri uri = NotePad.Notes.CONTENT_URI;    //删除所有数据mContentResolver.delete(uri, null, null);String[] projection = new String[]{NotePad.Notes.TITLE,NotePad.Notes.NOTE};Cursor cursor = mContentResolver.query(uri, projection, null, null, null);//如果查找的时候,没有发现一条数据,表示删除成功。if(cursor !=null && cursor.moveToFirst()){assertTrue(false);}else {assertTrue(true);}if(cursor != null){cursor.close();}}}


注意到我们这里只有两个测试方法,其实还远远不够的,还要测试非法URI, 更新数据,删除一条记录等等,大家在平时项目中可以完善自己的测试,这里只是一个简单的例子。

感觉Android中的Content Provider完全可以用CodeSmith来生成,有机会试试看。

最后是源码下载:NotePad
文章源地址:http://www.waitingfy.com/?p=96

更多相关文章

  1. Android(安卓)CTS 测试研究之二
  2. 使用Javaweb开发的WebService部署到Tomcat,使用Android调用的遇到
  3. Android打开通讯录并获取数据
  4. Mac完整卸载Android(安卓)Studio的方法
  5. Android(安卓)学习笔记
  6. Android(安卓)Instrumentation Test
  7. 【Android】Android清除本地数据缓存代码
  8. android mediaStore
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. MySQL出现Waiting for table metadata lo
  2. mysql语句实现简单的增、删、改、查操作
  3. MySQL表和列的注释总结
  4. Mysql中事务ACID的实现原理详解
  5. mysql查找删除表中重复数据方法总结
  6. 部署MySQL延迟从库的好处小结
  7. Mysql SSH隧道连接使用的基本步骤
  8. SQL Server 完整备份遇到的一个不常见的
  9. mysql-8.0.15-winx64 使用zip包进行安装
  10. MySQL8.x msi版安装教程图文详解