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的简易用法. 下面开始介 ...
随机推荐
- Python random模块random/uniform/randint/choice/getrandbits/shuffle/choice/sample随机函数
1.random.random() 返回0<=n<1之间的随机实数n 2. random.uniform() 弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限. 3. ...
- cocos2d-x JS 开启远程代码调试
为了方便服务端与测试部门的工作需要,把客户端的写的程序可以在其他电脑上运行,方便他人工作与测试. 下面是cocos2d-x JS WebStorm 的设置方法.
- netCore webapi Uow实现方式
参照 http://www.cnblogs.com/GreedyL/p/7474368.html 思路: 1.创建ActionFilter拦截请求,在拦截器中注入IUOW,IUOW里面注入IDbCon ...
- ASP.NET JSON(转http://www.360doc.com/content/14/0615/21/18155648_386887590.shtml)
概念介绍还是先简单说说Json的一些例子吧.注意,以下概念是我自己定义的,可以参考.net里面的TYPE的模型设计如果有争议,欢迎提出来探讨!1.最简单:{"total":0} t ...
- html5-css渐变色
div{ width: 300px; height: 100px; margin: 50px; padding: 50px; border:5px groove rgba ...
- hdu2295DLX重复覆盖+二分
题目是说 给了n个城市 m个雷达 你只能选择其中的k个雷达进行使用 你可以设置每个雷达的半径,最后使得所有城市都被覆盖,要求雷达的半径尽可能的小(所有雷达的半径是一样的) 二分最小半径,然后每次重新建 ...
- codeoforces 932A
题意: A和B在玩一个游戏,首先有一个X0 >= 3,之后选择一个小于X0的质数p,然后在找一个最小的X1 >= X0,并且p可以整除X1:之后再选择一个小于X1的质数p,然后再找一个最小 ...
- spring部分注解
@Controller @SpringBootApplication @Configuration @ComponentScan(basePackages={"first",&qu ...
- Java综合高级篇
1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...
- 邮件服务器hMailServer管理工具hMailServer Administrator汉化(转)
//实现:邮件服务器hMailServer管理工具hMailServer Administrator的汉化 //环境: Windows Server 2008 R2 hMailServer Admin ...