zoukankan      html  css  js  c++  java
  • 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);
    }
    }

  • 相关阅读:
    华为云文字识别服务关键技术、能力和产品落地需要注意的事宜(OCR系列二)
    【华为云技术分享】大数据容器化,头部玩家尝到了甜头
    【华为云技术分享】9 个Java 异常处理的规则!
    【华为云技术分享】一统江湖大前端DOClever—你的Postman有点Low
    【华为云技术分享】大前端的自动化工厂— babel
    非编程人学Python,要注意哪些隐秘的错误认知?
    【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
    【鲲鹏来了】鲲鹏迁移过程案例分享
    【华为云技术分享】圣诞特别版 | 数据库频频出现OOM问题该如何化解?
    HBuilder开发App
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/4191764.html
Copyright © 2011-2022 走看看