Android 中的单元测试(使用AndroidTestCase 进行 Content Provider 测试)

网友投稿 828 2022-10-11

Android 中的单元测试(使用AndroidTestCase 进行 Content Provider 测试)

Android 中的单元测试(使用AndroidTestCase 进行 Content Provider 测试)

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-.Uri;import android.test.AndroidTestCase;public class TestNotePadProvider extends AndroidTestCase{ ContentResolver mContentResolver; @Override protected void setUp() throws Exception { super.setUp(); //AndroidTestCase 中核心的就是getContext(),可以得到一个模拟的context mContentResolver = 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来生成,有机会试试看。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:NAMI专为小程序而生的服务端开发容器
下一篇:js将页面上取得的元素坐标转换为电脑屏幕坐标
相关文章

 发表评论

暂时没有评论,来抢沙发吧~