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" Android操作系统是一个基于Linux的开源码操作系统,主要用于便携设备。随着Android技术的出现,越来越多的手机开发商采用Android操作系统,因此Android通讯录的开发也变得必不可少。本...
Android Studio是一个由Google开发的,用于Android应用程序开发的...SQLite可以在各种操作系统和编程语言中使用,包括Android、iOS、Windows、Linux等,同时还可以使用多种编程语言进行开发,方便了对开发人员的使用。
验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...
在Android开发中,掌握`sqlite3`命令行工具的使用对于调试和测试数据库操作至关重要。以下是一些基本的`sqlite3`命令: 1. **.open**:打开一个SQLite数据库文件。 2. **.tables**:列出数据库中的所有表格。 3. **...
**Android数据库查看工具SqliteStudio** SqliteStudio是一款强大的SQLite数据库管理工具,尤其适用于Android开发者。SQLite是Android系统默认的轻量级关系型数据库,广泛应用于应用程序的数据存储。SqliteStudio...
总之,SQLiteStudio v2.15作为一款强大的SQLite数据库管理工具,为Android开发者提供了便利,使得在开发过程中对SQLite数据库的管理和调试变得更加高效和直观。通过使用这个工具,开发者可以更好地理解和控制其应用...
在Android平台上,SQLite3是一个至关重要的组件,它是一个轻量级的、自包含的、无服务器的、事务型的关系数据库引擎。这篇知识分享将深入探讨SQLite3在Android系统中的应用,以及如何处理从AVD(Android Virtual ...
1. 安装与集成:SQLiteManager通常以插件形式存在于Android Studio或其他集成开发环境中,按照指示进行安装并配置。 2. 连接数据库:在SQLiteManager中选择需要操作的应用,连接到对应的数据库文件。 3. 执行SQL:在...
SQLite被集成到Android系统中,为开发者提供了高效、可靠的本地数据存储解决方案。在这个简单的使用例子中,我们将探讨如何在Android应用中创建、操作和查询SQLite数据库。 首先,要在Android应用中使用SQLite,你...
测试SQLite事务是确保应用稳定性和数据完整性的重要环节。可以通过编写JUnit测试用例来模拟并发情况,检查事务的隔离性和持久性。例如,可以创建两个线程,一个进行读操作,另一个进行写操作,观察在事务处理下的...
五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的结构化数据。本案例围绕"android sqlite数据库框架"展开,旨在通过Java注解...
标题中的“android sqlite数据库简单查看工具”是指一个专为Android平台设计的SQLite数据库查看和编辑工具。这个工具通常具有用户友好的界面,使得开发者和测试人员能够方便地浏览、查询和修改SQLite数据库中的数据...
总结,ContentProvider单元测试是Android开发中不可或缺的一环,通过合理的测试策略和工具,我们可以确保ContentProvider功能的稳定性和可靠性,为用户提供无缝的数据交互体验。`ProviderTest`文件应该包含了具体的...
Android Studio是Google推出的一款专为Android应用开发者设计的集成开发环境(IDE),它提供了丰富的工具集,包括代码编辑器、调试器、模拟器等,使得开发者能够高效地构建和测试Android应用。 二、SQLite数据库 ...
开发者需进行单元测试、集成测试以及性能测试,确保每个功能的正确性,系统的整体性能以及在不同设备上的兼容性。 总的来说,“Android基于SQLite的学生信息管理系统”是一个融合了人工智能理念的信息管理解决方案...
本文将深入探讨Android环境下SQLite与SQLCipher的性能测试,以及它们在实际应用中的优缺点。 首先,SQLite作为Android默认的数据库,其性能主要体现在快速的本地数据存取、简单的API接口和良好的兼容性。它的优势...
以"日记本"应用为例,我们需要创建一个"diary"表,包含id(主键)、title(日记标题)、content(日记内容)和date(日记日期)等字段。在SQLiteOpenHelper的子类中,我们可以在onCreate()方法中编写SQL语句来创建这...
总结来说,"android sqlite_admin"是Android平台上一款实用的SQLite数据库管理软件,它以图形化的方式简化了数据库操作,提升了开发者的体验。对于任何需要在Android应用中使用SQLite数据库的开发者来说,这款工具都...