Android[中級教程]第四章 單元測試AndroidTestCase

來源:互聯網
上載者:User

 相信很多同學都會有操作SQLite不方便的感覺,對於資料庫操作又不能很明顯地看出問題,這裡我們就接上一章的SQLite操作輔助類進行單元測試,OK,我們來看一下類碼:首先是DatabaseHelper.java

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper{//資料庫名稱private static final String DB_NAME = "SQLiteDemo.db";//資料庫版本private static final int DB_VERSION = 1;//表名public static final String TABLE_NAME = "demo";private static final String DB_CREATE = "create table " + TABLE_NAME +  " (_id integer primary key autoincrement, name varchar(20), number varchar(10))";public DatabaseHelper(Context context){super(context, DB_NAME, null, DB_VERSION);}/** * 建立表 */@Overridepublic void onCreate(SQLiteDatabase db){db.execSQL(DB_CREATE);}/** * 更新表 */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){//db.execSQL("drop table if exists " + TABLE_NAME);//onCreate(db);}}

接著再上資料操作輔助類DatabaseServer.java

import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class DatabaseServer{private DatabaseHelper dbHelper;public DatabaseServer(Context context){this.dbHelper = new DatabaseHelper(context);}/** * 插入資料 *  * @param name *            名字 * @param number *            資料 * @return 如果成功則返回true,否則返回false */public boolean insert(String name, String number){//建立或開啟資料庫SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues cv = new ContentValues();cv.put("name", name);cv.put("number", number);//插入資料,返回插入資料IDlong id = db.insert(dbHelper.TABLE_NAME, null, cv);if (id != 0){return true;}return false;}/** * 更新資料 *  * @param id *            資料列_id * @param number *            數量 * @return 如果成功則返回true,否則返回false */public boolean update(int id, String number){SQLiteDatabase db = dbHelper.getWritableDatabase();//Android內建的ContetValues,類似於Map,提供了put(String key, XXX value)的方法存入資料ContentValues cv = new ContentValues();cv.put("number", number);//通過ContentValues更新資料表,返回更新的ID值int result = db.update(dbHelper.TABLE_NAME, cv, "_id=?",new String[] { String.valueOf(id) });if (result != 0){return true;}return false;}/** * 刪除資料 *  * @param id *            資料列_id * @return */public boolean delete(int id){SQLiteDatabase db = dbHelper.getWritableDatabase();//刪除指定ID值int result = db.delete(dbHelper.TABLE_NAME, "_id=?",new String[] { String.valueOf(id) });if (result != 0){return true;}return false;}/** * 查詢資料 *  * @return 返回資料列表 */public Cursor fetchAll(){SQLiteDatabase db = dbHelper.getReadableDatabase();//查詢資料表中所有欄位Cursor cursor = db.query(dbHelper.TABLE_NAME, null, null, null, null,null, "_id desc");if (cursor != null){return cursor;}return null;}}

這裡兩個類都建好了,但我們要測試一下我們建的這兩個類是否工作正常,能否插入,更新,刪除,查詢資料,這裡我們就用了TestCase來做測試

SQLiteDemoTest.java

import android.database.Cursor;import android.test.AndroidTestCase;public class SQLiteDemoTest extends AndroidTestCase{private DatabaseServer dbServer;/** * 測試插入資料 */public void testinsert(){dbServer = new DatabaseServer(this.getContext());boolean flag = dbServer.insert("沙僧", "10");System.out.println(flag);}/** * 測試查詢資料 */public void testfetchAll(){dbServer = new DatabaseServer(this.getContext());Cursor cursor = dbServer.fetchAll();while (cursor.moveToNext()){System.out.println(cursor.getString(1));System.out.println(cursor.getString(2));}}/** * 測試更新資料 */public void testupdate(){dbServer = new DatabaseServer(this.getContext());boolean flag = dbServer.update(1, "20");System.out.println(flag);}/** * 測試刪除資料 */public void testdelete(){dbServer = new DatabaseServer(this.getContext());boolean flag = dbServer.delete(1);System.out.println(flag);}}

當然,別忘記了,在AndroidManifest.xml中還要加入測試庫檔案

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.kang.button_demo" android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="10" /><application android:icon="@drawable/icon" android:label="@string/app_name"><uses-library android:name="android.test.runner" /><activity android:label="@string/app_name" android:name=".SQLiteDemo"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="com.kang.button_demo" android:label="Tests for My App" /></manifest>

這裡有一個<uses-library>這是測試庫,必須要加入的,還有就是最後<instrumentation android:name="android.test.InstrumentationTestRunner"
  android:targetPackage="com.kang.button_demo" android:label="Tests for My App" />也是必須加的,這是定義測試包的,你的測試檔案必須要放在根包下的,這裡我的根包是com.kang.button_demo

好了,你可以運行一下,看是否是出現藍條,而不是紅條,呵呵,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.