Android(安卓)中的单元测试(使用AndroidTestCase 进行 Content Provider 测试)
16lz
2022-03-08
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 更多相关文章
- Android(安卓)CTS 测试研究之二
- 使用Javaweb开发的WebService部署到Tomcat,使用Android调用的遇到
- Android打开通讯录并获取数据
- Mac完整卸载Android(安卓)Studio的方法
- Android(安卓)学习笔记
- Android(安卓)Instrumentation Test
- 【Android】Android清除本地数据缓存代码
- android mediaStore
- mybatisplus的坑 insert标签insert into select无参数问题的解决