一、安卓下的单元测试
1.创建一个单元类,继承超类AndroidTestCase
2.在AndroidManifest.xml配置清单中配置以下两点
首先在manifest节点下添加节点instrumentation,targetPackage包名与单元测试类包名保持一致
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.myandroid.db" />
然后在application节点下添加节点
<uses-library android:name="android.test.runner" />

二、数据库的操作
首先创建一个帮助类,继承SQLiteOpenHelper,实现父类中的构造函数。
在这个类中,传入上下文,数据库名称,版本号,做表结构的初始化,版本号改变时更改表结构
代码如下
public class PersonDBHelper extends SQLiteOpenHelper {

/**
* 数据库的初始化
* @param context 上下文
* @param name 数据库名称
* @param factory 工厂模式,null表示系统默认的工厂
* @param version 数据库版本号,最小值为1
*/
public PersonDBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO 自动生成的构造函数存根
}
//第一次创建数据库时执行此方法,适合做数据库表结构的初始化
@Override
public void onCreate(SQLiteDatabase db) {
//创建用户表
db.execSQL("create table userInfo(id integer primary key autoincrement,username varchar(50),telphone varchar(20),createdate datetime)");
}
//当数据库的版本发生变化时调用
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
//更改用户表结构
db.execSQL("alter table userInfo add remark varchar(50)");
}
}
接下来根据创建帮助类写业务逻辑方法
public class PersonDao {
private PersonDBHelper personDBHelper;
//源码-使用字段生成构造函数
public PersonDao(PersonDBHelper personDBHelper) {
super();
this.personDBHelper = personDBHelper;
}

public boolean GetList(String username){
SQLiteDatabase db =personDBHelper.getReadableDatabase();
if(db.isOpen()){
Cursor reader =db.rawQuery("select * from userInfo where username=?", new String []{username});//参数化查询
if(reader.moveToNext()){
return true;
}
reader.close();
db.close();
}
return false;
}
public boolean Insert(Person model ){
Object [] parms =new Object[]{model.getUsername(),model.getTelphone(),model.getCreatedate()};
SQLiteDatabase db =personDBHelper.getReadableDatabase();
if(db.isOpen()){
db.execSQL("insert into userInfo(username,telphone,createdate) values(?,?,?)", parms);
db.close();
return true;
}
return false;
}
}
然后用Android下的单元测试测试PersonDao类的方法
public class testPersonDao extends AndroidTestCase {
public void testAdd(){
Person person =new Person();
person.setUsername("黄忠");
person.setTelphone("15110041588");
person.setRemark("我要飞的更高");
person.setCreatedate(new Date());
PersonDBHelper personDBHelper =new PersonDBHelper(getContext(), "person.db", null, 1);
PersonDao dao =new PersonDao(personDBHelper);
boolean res =dao.Insert(person);
assertEquals(true, res);
}
}

Android之单元测试及数据库操作的更多相关文章

  1. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  2. Android学习四:数据库操作

    1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...

  3. Android大学课件SQLite3 数据库操作

    一.数据库介绍 SQLite3:当有大量相似结构的数据需要存储的时候 . 其实SQLite3 就是一个文件,类似之前学过的MySQL SqlServer等. 二.SQLiteOpenHelper 是一 ...

  4. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  5. [Android] Sqlite 数据库操作 工具封装类

    sqlite 数据库封装类 DatabaseUtil.java(封装的类) package com.jack.androidbase.tools; import android.content.Con ...

  6. Android开发--数据存储之数据库操作

    简介: SQLite 的介绍: SQLite数据库属于文本型的数据库,它是以文本的形式来保存的.Android提供了对 SQLite 数据库的完全支持,应用程序中的任何类都可以通过名称来访问任何的数据 ...

  7. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  8. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  9. Android—Ormlite框架简单的操作数据库

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

随机推荐

  1. ios UrlEncode与UrlDecode

    url字符串中具有特殊功能的特殊字符的字符串,或者中文字符,作为参数用GET方式传递时,需要用urlencode处理一下.当然,有时作为Post参数传递,也需要urlencode处理一下. NSStr ...

  2. C# 深拷贝和浅拷贝

    在编码中.经常会遇到赋值操作.值类型就不说了.如果是引用类型赋值.其实是引用传递,即赋值的是一个引用.比如: Person p1 = new Person("张三", " ...

  3. shell基础:预定义变量

    比如&& ||用的就是$?,用于计算机的识别

  4. vue中使用elementui里的table时不被选中设置

    情景:例如提现列表,转账失败后转账金额直接返回用户余额,所以当前数据不可以再次操作 直接粘贴代码: <el-table-column type="selection" wid ...

  5. Javascript-全局函数和局部函数作用域的理解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 关于python中selector问题

    在做大型的爬虫时,re表达式往往效率不高,scrapy框架为爬虫提供了很好的爬虫方法 scrapy提取数据时有一套自己的机制,即selectors,一般通过特定的XPath,或者特定 的CSS表达式来 ...

  7. ABC3

    Sql Server http://www.cnblogs.com/sunxi/p/4600152.html http://blog.csdn.net/dmz1981/article/details/ ...

  8. PKCS#1

    ASN.1 syntax,octet string是一个8 bytes sequence string. RSA中涉及到的Data conversion: 1)I2OSP,Integer to Oct ...

  9. 扇入Fan-in和扇出Fan-out

    什么是扇入和扇出? 在软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况. 按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成. 扇入:是指直接调用该模块的上级模块的个数.扇 ...

  10. DataX介绍

    一. DataX3.0概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定 ...