• 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);
    }
    }

  • 相关阅读:
    JS 深拷贝方法
    数字图像处理中的混叠
    RoIAlign理解
    关于python项目vscode 提示import could not be resolved的问题解决
    HTTPS网站证书申请,HTTPS的安全特性
    使用多域名SSL证书 一种免费的证书申请方式
    During secondary validation: DNS problem: query timed out looking up CAA for ***
    The Next Gen Database Servers Powering Let's Encrypt
    Jenkins 构建及回滚任务
    Go优雅追踪堆栈错误包
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/4191764.html
Copyright © 2020-2023  润新知