Android之单元测试及数据库操作
一、安卓下的单元测试
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之单元测试及数据库操作的更多相关文章
- Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...
- Android学习四:数据库操作
1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...
- Android大学课件SQLite3 数据库操作
一.数据库介绍 SQLite3:当有大量相似结构的数据需要存储的时候 . 其实SQLite3 就是一个文件,类似之前学过的MySQL SqlServer等. 二.SQLiteOpenHelper 是一 ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- [Android] Sqlite 数据库操作 工具封装类
sqlite 数据库封装类 DatabaseUtil.java(封装的类) package com.jack.androidbase.tools; import android.content.Con ...
- Android开发--数据存储之数据库操作
简介: SQLite 的介绍: SQLite数据库属于文本型的数据库,它是以文本的形式来保存的.Android提供了对 SQLite 数据库的完全支持,应用程序中的任何类都可以通过名称来访问任何的数据 ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
- Android—Ormlite框架简单的操作数据库
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
随机推荐
- iOS应用图标及尺寸
Icon and Image Sizes Every app needs an app icon and a launch file or image. In addition, some apps ...
- python对字典及列表递归排序
对字典内所有内容进行排升序排序,包括,子数组,子字典 需要注意: 1.字典因为是在一定程序上无序的,所以这里采用了内置包,来变成有序字典 from collections import Ordered ...
- 听说,你也一直钟爱着equals。。。
脑补一下final final 用于声明变量/参数/属性.方法和类. 修饰变量:如果变量是基本类型,其值不变:如果是对象,则引用不可再变(内容可变). 修饰方法:方法不可重写(是否可继承取决于方法的访 ...
- Ajax的重构
Ajax的重构方法: (1)创建一个单独的JS文件,命名为AjaxRequest.js,并且在该文件中编写重构Ajax所需要的代码. var net = new Object(); //创建一个全局变 ...
- 在liunx系统里面进行复制文件的时候报错:cp:omitting directiory
在复制的时候执行命令:cp /TEST/test1 /TEST/test2 结果报错:cp:omitting directior 报错原因:test1下面还有文件,不能删除 解决办法:cp -r / ...
- RepRap Prusa i3 平台自動補正
RepRap Prusa i3 平台自動補正 平台校正不但費時,而且經常失敗,時在是很令人洩氣!期盼了好一陣子,Marlin終於將平台自動補正的功能加進來了!!這個功能將原本Z軸的Endstop,改裝 ...
- 改装原生的dialog
改装 dialog 定制 View rootView = LayoutInflater.from(mContext). inflate(R.layout.nfc_tag_name_dialog, nu ...
- hdu4784
题意: 给了一个图 从1号节点走到N号节点,然后,每个地方有买卖盐的差价,然后求 到达N的最大价值,一旦走到N这个点就不能再走了,或者走到不能再别的世界走1和N这两个点,然后接下来 用一个 四维的数组 ...
- Sitecore系统教程之模板理解
Sitecore中的所有内容都是一个项目.模板也是如此.Sitecore中的模板是一个项目,它定义了其他项目的结构和行为.Sitecore中的每个项目都是某个模板的实例.模板还可以定义它分解成的部分和 ...
- QString字符串中双引号的梗
[1]QString字符串不支持双引号 最近做项目(本地环境:WIN10 + QT5.9.2 + VS2017).有个需求,需要实现形如 "key="123456"&qu ...