Android测试,测试activity,使用InstrumentationTestCase类
测试后台逻辑,使用 AndroidTestCase 类
Android单元测试,主要目的是为了保证复杂逻辑是否正常正确,以及依据TDD的原则,测试先于编码,理清代码编写的思路。
主要以AndroidTestCase类测试复杂逻辑来讲解:
以android sqlite数据库逻辑代码的测试为例。
数据库逻辑代码:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import com.android.hanhan.R;
public class DatabaseService {
private DatabaseHelper dbOpenHelper;
protected static final String TBL_NAME = "article";
protected static final String FIELD_ID = "id";
protected static final String FIELD_TITLE = "title";
protected static final String FIELD_CONTENT = "content";
protected static final String FIELD_DELETE = "deleted";
protected static final String FIELD_PUBLISHDATE = "publishdate";
protected static final String FIELD_FAVORITE = "favorite";
protected static final String FIELD_CLICKCOUNT = "clickcount";
protected static final String FIELD_FAVORITEDATE = "favoritedate";
//构造器,初始数据库服务
public DatabaseService(Context context) {
dbOpenHelper = new DatabaseHelper(context);
}
// 删除表
public void dropTable(String taleName) {
dbOpenHelper.getWritableDatabase().execSQL(
"DROP TABLE IF EXISTS " + taleName);
}
// 关闭数据库
public void closeDB() {
dbOpenHelper.getWritableDatabase().close();
}
// 取得数据库TBL_NAME 表的所有数据
public List<Map<String, Object>> fetchALLArticle() {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Cursor cur = db.query(TBL_NAME, new String[] {FIELD_ID, FIELD_TITLE, FIELD_CONTENT,
FIELD_PUBLISHDATE,FIELD_FAVORITE ,FIELD_DELETE }, null, null, null,
null, null);
list = getListFromDb(list, cur);
return list;
}
// 取得数据库TBL_NAME表的数据个数
public long getPageCount(){
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
return DatabaseUtils.queryNumEntries(db, TBL_NAME);
}
// 根据分页尺寸和页数,取得数据列表
public List<Map<String, Object>> fetchCustomArticle(long pageSize, long pageID) {
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
String sql = "select * from " + TBL_NAME +
" Limit "+String.valueOf((pageID-1)*pageSize)+" ,"+String.valueOf((pageID)*pageSize);
Cursor cur = db.rawQuery(sql, null);
list = getListFromDb(list, cur);
return list;
}
//取得数据列表方法
private List<Map<String, Object>> getListFromDb(List<Map<String, Object>> list, Cursor cur) {
if(cur.moveToFirst()){
do{
Map<String, Object> map = new HashMap<String, Object>();
map = addValueToMap(cur);
list.add(map);
}while(cur.moveToNext());
}
return list;
}
// 将数据映射到map
private Map<String, Object> addValueToMap(Cursor cur) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", cur.getString(cur.getColumnIndex(FIELD_ID)));
map.put("title", cur.getString(cur.getColumnIndex(FIELD_TITLE)));
map.put("info", cur.getString(cur.getColumnIndex(FIELD_PUBLISHDATE)));
map.put("content", cur.getString(cur.getColumnIndex(FIELD_CONTENT)));
map.put("publishdate", cur.getString(cur.getColumnIndex(FIELD_PUBLISHDATE)));
map.put("favorite", cur.getString(cur.getColumnIndex(FIELD_FAVORITE)));
map.put("delete", cur.getString(cur.getColumnIndex(FIELD_DELETE)));
map.put("img", R.drawable.stop);
return map;
}
}
数据库单元测试代码,测试数据取得所有数据方法和 getPageCount()方法
import android.test.AndroidTestCase;
import com.android.hanhan.util.DatabaseService;
public class DatabaseServiceTest extends AndroidTestCase{
private DatabaseService dbs;
@Override
protected void setUp() throws Exception {
dbs = new DatabaseService(getContext());
}
@Override
protected void tearDown() throws Exception {
dbs.closeDB();
}
public void testPageCount() throws Exception{
assertEquals(12, dbs.getPageCount());
}
public void testFetchALLArticle() throws Exception{
assertEquals(12, dbs.fetchALLArticle().size());
}
}
如果为绿色,则通过;红色,表示不通过
如出错,android junit test会有详细的错误信息,方便更正,更能确保程序的健壮
当然需要配置AndroidManifest.xml 文件
<!-- android 单元测试需要添加的内容 -->
<uses-library android:name="android.test.runner" />
<instrumentation android:targetPackage="com.android.abc"
android:label="Test Sqlite" android:name="android.test.InstrumentationTestRunner">
</instrumentation>
分享到:
相关推荐
SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对...Android系统中也不例外,也是采用SQLite,本节中就学习下在andorid中怎样使用该数据库来存放数据,并且对SQLite完成简单的新建,更新,查询,删除等操作。
验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...
android studio1.2 sqlite的操作 测试通过 转:http://www.jb51.net/article/36062.htm 这个例子的基础上修改
五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般...
使用SQLite时,继承...最好使用sqllite expert编辑代码测试,再复制到Android studio中 2.如果没有的话就要注意数据类型(integer、text、float等)前面一定要有一个空格否则 属性名就会变成**“KEY_IDInteger
Android Studio是一个由Google开发的,用于Android应用程序开发的...SQLite可以在各种操作系统和编程语言中使用,包括Android、iOS、Windows、Linux等,同时还可以使用多种编程语言进行开发,方便了对开发人员的使用。
SQLite和SQLCipher性能测试
Google开源的基于Android的Sqlite对象关系映射框架 ormlite 压缩包里包含 ormlite-android-4.30.jar 及帮助文档、ormlite-core-4.30.jar核心包 当然也支持在Java中的Jdbc中使用类似Hibernate Sqlite驱动包、ormlite...
DBSQLite android数据增删改查的方法 以及测试
android SQLite数据库的增删改查以及事务的单元测试
本资源中有:真机安装sqlite3文档以及针对5.0以上和以下版本的资源文件,真机测试通过 libncurses.so
NULL 博文链接:https://huiqinbo.iteye.com/blog/2247535
##版本已使用MySQLWorkbench 5.2.36进行实施和测试,需要对该项目进行更新以支持较新的版本##用法从MySQLWorkbench,转到“脚本->安装插件/模块…”; 在对话框中,选择ExportSQLite.grt.lua脚本; 重新启动...
本系统是一个基于Android的课堂测试系统,学生在课上进行测试就是本系统实现的基本功能。设计出一个老师能够自主发布试题,学生能够在Android移动端进行测试,本课堂测试系统的基本目标就算完成。本系统中,一共包括...
本程序是一个SQLite的规范使用示例,程序涉及到: SQLite 增、删、改、查、SQL版本更新,ListView创建条目生成,单个条目点击事件处理,程序中通过Junit来实现单元测试。
但因为某些原因,没有使用上,今天被我发现,删除可惜,特此把它贡献出来,里面数据库的增删改查各个方法我都写了,还有我在MainActivity对我所写的各个方法都写了测试实例,对sqlite3数据库操作不熟悉的人,...
实现基本的sqlite操作,简单易学,本地化嵌入式数据库操作支持。2.3.3,4.0版本测试通过。
sqlite for unity with mac # 需要啥条件才能使用: 1. unity3d在mac下开发 # 可以支持发布哪些平台: 1. mac 2. ios 3. android # 附加的脚本文件: 1. 一个封装过的helper 2. 一个测试脚本(调用helper)
【下载前请查看主页内关于测试光照强度的文章】 该资源是基于Android开发的测试光照强度的APP,是使用手机的光线传感器来获取数据,并将数据写入SQLite数据库中。
这是android上sqlite对象关系映射的一个实现。 它包含一组最少的功能,用于将 Java 对象模型映射到 android 应用程序中的关系数据库,但仍然给开发人员带来了低负担。 以下是一些功能: 域对象中没有数据库 id...