一、安卓下的单元测试
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. 使用github(一)

    一.使用Github(目的.基本概念) 1.目的 借助github托管项目代码 2.基本概念 (1)仓库(Repository) 仓库即项目的意思,你想在github上开源一个项目,那就必须要新建一个 ...

  2. MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束

    虽然字段可以为空值,但是如果存储多个空值,如何确保唯一性?其实只会存储一个空值. 提示错误:Tom已经存储过,所以唯一约束在起作用. 一张表中:主键约束只能有一个,唯一约束可以有多个.在创建索引的时候 ...

  3. 家庭记账本之微信小程序(一)

    记得ppt中说到,可以制作为微信小程序或者是安卓的应用,但是在我了解后觉得小应用有点力不从心,所以还是从微信小程序开始吧,先让我们了解一下主要的东西 1.准备工作 IDE搭建2.知识准备从零开始app ...

  4. 转:django模板标签{% for %}的使用(含forloop用法)

    django模板标签{% for %}的使用(含forloop用法)  {%  %}虽然这个是写在html中,但是这里边写的是服务端代码 在django模板标签中,{% for %} 标签用于迭代序列 ...

  5. JDK源码调试常见错误。

    1.删除不需要的代码,即swing相关的代码 2.执行命令时要将前提环境进入文件夹如下: 起初没有完全执行第一条,因为网上说可以根据需要选择相关的代码,于是就没有删除,以后第一次模仿网上的例子的时候要 ...

  6. Django后台管理系统讲解及使用

    大家在创建Django项目后,在根路由urls.py文件中,会看到一行代码 from django.contrib import admin urlpatterns = [ url(r'^admin/ ...

  7. SnmpTools配置

    上网搜索了很多文档,但是snmptools一直没有配置好,原因就是64机器,网上的说法大多直接复制过来的,或者就没有考虑64位机器.经过仔细搜索和测试,一下是详细的配置过程: Index 安装 如果是 ...

  8. github常见错误提示之一

    如果输入$ Git remote add origin git@github.com:Jomsou(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote o ...

  9. 谈谈CSS中一些比较"偏门"的小知识

    前面我写了:谈谈html中一些比较"偏门"的知识,现在这篇(主要)想谈谈个人所见的CSS一些小知识点,加深印象:同时也希望有需要的人能有收获! 1.常见的浏览器内核: 以IE为代表 ...

  10. JavaScript-----截取字符串的常用方法

       1.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符 start 必需,一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置 ...