Android測試&許可權機制&資料存放區

來源:互聯網
上載者:User

標籤:

 測試
  • 黑箱測試 -測試人員不知道原始碼
  • 白盒測試 -測試人員知道原始碼,能寫一些測試案例
根據測試的粒度
  • 方法測試 function test

  • 單元測試 unit test junit測試架構

  • 整合測試 integration test

  • 系統測試 system test

根據測試的暴力程度
  • 煙霧測試 (Smoke Test) smoke test
  • 壓力測試 pressure test
單元測試架構(JUnit)

Android代碼只能運行在手機中的Dalvik虛擬機器裡,在PC機的JVM下會報錯異常,寫測試案例,通常把上傳到Android手機或模擬器中運行。

Android下單元測試流程
  • 1.寫商務邏輯代碼

  • 2.寫測試案例繼承AndroidTestCase類

  • 3.寫測試方法public void testAdd() throw Exception{}

  • 4.配置資訊清單檔

    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.junit"android:versionCode="1"android:versionName="1.0" ><uses-sdk    android:minSdkVersion="8"    android:targetSdkVersion="17" /><!-- 在根節點 manifest節點下放置  指令集 instrumentation --><instrumentation    android:name="android.test.InstrumentationTestRunner"    android:label="Tests for My App"    android:targetPackage="com.itheima.junit" /><application    android:allowBackup="true"    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:theme="@style/AppTheme" >   <!--  使用的函數庫  application節點的下面--><uses-library android:name="android.test.runner" /><activity    android:name="com.itheima.junit.MainActivity"    android:label="@string/app_name" >    <intent-filter>        <action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
  • 5.選中測試方法,右鍵Run as -->Android JUnit Test
LogCatLogCat面板
  • Filter過濾器
日誌等級
  • verbose 提醒 黑色
  • debug 調試 藍色
  • info 資訊 綠色
  • warn 警告 橙色
  • error 錯誤 紅色
天天就愛擼代碼~~
  • 注意配置合適的許可權
  • 寫sd卡 必須要聲明許可權的.如: 寫檔案,刪除檔案
  • 讀sd卡 預設是不需要許可權的.
  • 如果使用者佈建了讀取sd卡必須使用許可權,應用程式需要加上許可權
  • 基本概念: 手機內部儲存空間, 手機的一塊微硬碟,手機記憶體 ROM 斷電了, 資料還是存在的 手機記憶體: 相當於電腦上的記憶體條 RAM 斷點資料就沒了. 外部儲存空間: sd卡
儲存資料到sdcard
//擷取sdcard剩餘空間long usableSpace = Environment.getExternalStorageDirectory().getUsableSpace();// 擷取外置sdcard目錄File path = Environment.getExternalStorageDirectory();// 擷取sdcard的狀態(是否掛載)String state = Environment.getExternalStorageState();
儲存資料到內部存放裝置(應用私人檔案夾,不需要寫入許可權)(安全)

每一個安裝的應用程式 預設情況下作業系統都會給這個應用程式分配一個單獨的使用者私人的檔案,別的應用程式是不可以讀取/修改的。

  • 應用私人檔案夾預設情況下,其他應用無法訪問,保證其資料安全
  • 應用私人檔案路徑:/data/data/包名/
  • 擷取路徑方法:

    File path = 當前類名.this.getFilesDir();//擷取目錄是會自動建立files檔案夾                 Context.getFilesDir();返回:/data/data/包名/files
  • 擷取臨時緩衝目錄cache:

    File path = 當前類名.this.getCacheDir();                 Context.getCacheDir();返回:/data/data/包名/cache
(檔案&檔案夾)許可權機制

MainActivity.this.openFileOutput("private.txt", MODE_PRIVATE);

參數1:檔案

參數2:

  MODE_PRIVATE 私人檔案(不可讀寫)  MODE_WORLD_READABLE 唯讀檔案  MODE_WORLD_WRITEABLE 唯寫檔案  MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE 可讀寫檔案

一個應用讀取另一個應用的私人檔案夾下的檔案:

    * 私人檔案:沒有許可權    * 可讀檔案:可讀    * 可寫檔案:沒有許可權    * 可讀可寫檔案:可讀

一個應用寫入另一個應用的私人檔案夾下的檔案:

    * 私人檔案:沒有許可權    * 可讀檔案:沒有許可權    * 可寫檔案:可寫    * 可讀可寫檔案:可寫
許可權表示: 0 123 456 789
0 表示檔案類型:l(小寫L)軟串連,d 表示檔案夾,- 表示檔案1 4 7 表示是否可讀。r 可讀,- 不可讀2 5 8 表示是否可寫。w 可寫,- 不可寫3 6 9   表示是否可執行。x 可執行,- 不可執行(一般用於開發人員常用的二進位可執行程式)

許可權分組

123:應用許可權,使用者權限456:所在組其他使用者權限789:其他應用,其他使用者

許可權值:

    r 許可權值對應 4    w 許可權值對應 2    - 許可權值對應 1

更改許可權命令樣本:

chmod 777 file.txt 變更檔許可權全域可讀可寫可執行
XML解析

解析步驟:

    // 擷取資產管理器    AssetManager am = this.getAssets();    try {    /***************************************/        // 1. 讀取xml資料        InputStream is = am.open("weather.xml");    /***************************************/        // 2. 解析資料(pull解析,Android下的XML解析方式)        // 2.1建立XML解析器        XmlPullParser parser = Xml.newPullParser();        // 2.2初始XML化解析器,指定解析哪個流,以什麼編碼解析        parser.setInput(is, "UTF-8");        // 2.3解析XML資料        int type = parser.getEventType();        while (type == XmlPullParser.START_TAG) {            String str = parser.nextText();                }            }    …………………………    /***************************************/    } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();    }finally{    /***************************************/        //關閉資料流        try {            is.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        };    }
Android下XML產生(序列化)

XML儲存資料

    …………    // 擷取應用私人目錄臨時緩衝目錄    File path = MainActivity.this.getCacheDir();    FileOutputStream fos = new FileOutputStream(new File(path,            "info.xml"));/***************************************/    // a.建立Xml序列化器    XmlSerializer serializer = Xml.newSerializer();/***************************************/    // b.初始化Xml序列化器設定輸出資料流,和編碼方式    serializer.setOutput(fos, "UTF-87");/***************************************/    // c.寫入xml資料    //文檔開頭    serializer.startDocument("UTF-8", true);        serializer.startTag(null, "info");            serializer.startTag(null, "qq");            serializer.text(qq);            serializer.endTag(null, "qq");            serializer.startTag(null, "pw");            serializer.text(pw);            serializer.endTag(null, "pw");        serializer.endTag(null, "info");    //文檔結束          serializer.endDocument();    …………/***************************************/    //關閉流    fos.close();    …………
大招:SharedPreferences封裝/讀取XML資料

SharedPreferences儲存資料(儲存位置:/data/data/包名/shared_prefs/xxx.xml)

            // 擷取應用私人目錄臨時緩衝目錄            File path = MainActivity.this.getCacheDir();            FileOutputStream fos = new FileOutputStream(new File(path,                    "info.xml"));/***************************************/            //初始化SharedPreferences            SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);/***************************************/            //通過SharedPreferences擷取編輯器            Editor ed =sp.edit();/***************************************/            //寫入資料            ed.putString("qq",qq);            ed.putString("pw",pw);/***************************************/            //提交資料            ed.commit();/***************************************/            //關閉流            fos.close();            …………

SharedPreferences讀取XML資料

        //初始化SharedPreferences        SharedPreferences sp2 = this.getSharedPreferences("config", MODE_PRIVATE);        //讀取資料        sp2.getString("qq", "");        ……        sp2.getXXX(key, defValue);

Android測試&許可權機制&資料存放區

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.