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的简易用法. 下面开始介 ...
随机推荐
- Node.js进击基础一(http)
URL:统一资源定位符,偏重定位,是URI的子集,例如网址.URL一定是URI,但URI 不一定是URL.规则:只能用英文阿拉伯数字某些符号等,如果有文字就必须编码. URI:统一资源标识符,偏重标识 ...
- iOS LeftMenu抽屉效果与ScrollView共存时的手势冲突
公司有个项目,需要做左侧滑动,首页是ScrollView嵌套TableView.首页是一个ScrollView,所以当contentOffset是0.0的时候,无法直接滑动出抽屉效果,用户体验感非常差 ...
- shiro loginUrl拦截无效
logUrl不拦截 或者 只跳转到/login.jsp 不跳到自己设置登录链接 在springmvc或事务那里 开启spring的显示代理(即cglib),并将shiro的安全管理器交给spring管 ...
- C# 去重处理字符大小写
本文展示了如何对集合去重并且处理大小写
- [17]Windows的启动过程
一.内核的引导 在intel x86系统上,windows操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始,windows setup程序在安装windows ...
- Discuz!代码大全
1.[ u]文字:在文字的位置可以任意加入您需要的字符,显示为下划线效果. 2.[ align=center]文字:在文字的位置可以任意加入您需要的字符,center位置center表示居中,left ...
- 转:php 5.5源码安装全过程
下载 PHP 源码包 # wget http://cn2.php.net/distributions/php-5.5.15.tar.bz2 # tar xf php-5.5.15.tar.bz2 -C ...
- Keras 如何利用训练好的神经网络进行预测
分成两种情况,一种是公开的训练好的模型,下载后可以使用的,一类是自己训练的模型,需要保存下来,以备今后使用. 如果是第一种情况,则参考 http://keras-cn.readthedocs.i ...
- 【转】基于Python的接口测试框架实例
下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试 ...
- JavaScript--定时器setTimeout()、clearTimeout(var param)和setInterval()、clearInterval(var param)
1.setTimeout().clearTimeout(var param) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,只调用一次 clearTimeout() 方法可取 ...