方法測試 function testandroid
單元測試 unit test junit測試框架緩存
集成測試 integration test安全
系統測試 system testapp
Android代碼只能運行在手機中的Dalvik虛擬機裏,在PC機的JVM下會報錯異常,寫測試用例,一般把上傳到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>
//獲取sdcard剩餘空間 long usableSpace = Environment.getExternalStorageDirectory().getUsableSpace(); // 獲取外置sdcard目錄 File path = Environment.getExternalStorageDirectory(); // 獲取sdcard的狀態(是否掛載) String state = Environment.getExternalStorageState();
每個安裝的應用程序 默認狀況下操做系統都會給這個應用程序分配一個單獨的用戶私有的文件,別的應用程序是不能夠讀取/修改的。this
獲取路徑方法:
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 表示文件類型: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 更改文件權限全局可讀可寫可執行
解析步驟:
// 獲取資產管理器 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(); }; }
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保存數據(保存位置:/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);