【Android開發-6】瞭解內情,我們需要一些調試和測試手段,android-6
前言:人生不可能十全十美,總會有些遺憾存在,經曆過遺憾,我們才懂的什麼是生活。程式也一樣,追求完美,就必然會有經曆bug存在的時候。經曆過不斷的bug磨練,我們技術才會不斷的成長。對於調試bug,通過一些方法和手段就會發現它原來如此。當一切恍然大悟時,就會發現缺陷也是一種美,因為它讓你更瞭解自己,或者說讓你更加瞭解你的程式。
第一、列印輸出調試
Android程式在虛擬機器運行時,我們如果通過System.out.print(),輸出調試資訊,我們在控制台是看不到的。所以我們有時候調試,後台要輸出一些東西,該怎麼辦。沒關係,Android提供了一個強大的android.util.Log 類. 我們可以運用如下:
Log.v("verbose","詳細資料層級--1級");
Log.d("debug","調試資訊層級--2級");
Log.i("info","提示資訊層級--3級");
Log.w("warn","警告資訊層級--4級");
Log.e("error","錯誤資訊層級--5級");
Log中的第一個參數:代表一個標籤Tag說明 ;第二個參數:代表調試資訊
程式運行後,會在Eclipse介面中的LogCat輸出如下內容:
從上面可以看出:不同層級,顏色代表也不同,這樣就易於調試觀察了。如果介面有很多類型相同的調試日誌資訊,左側邊欄點綠色的+,還可以添加過濾器,只顯示某標籤Tag的調試日誌,如下面只顯示Tag標籤為debug的
第二、單元測試
單元測試,示範步驟:
1.建立一個項目,比如叫TestAndroidJunit,建完目錄如下:
2.一個項目中一般有多個業務功能類,對於業務功能類,有時候一個團隊,個人弄完需要驗證正確後,才提交到svn中。這時候單元測試調bug就很重要了。右鍵src,建立class類MyFunction如下:
package com.wyz.myfunction;import android.util.Log;public class MyFunction {public void SayHello(String str){Log.d("SayHello",str);}public int Add(int a,int b){return a+b;}}
3.在TestAndroidJunit中AndroidManifest.xml的檔案加入如下內容:
<uses-library android:name="android.test.runner" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.wyz.testandroidjunit" />
記住加的位置如下:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wyz.testandroidjunit" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".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> <uses-library android:name="android.test.runner" /> </application><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.wyz.testandroidjunit" /> </manifest>
註:上面的<instrumentation>中的android:targetPackage屬性值設定需跟本項目的包名一致,即
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wyz.testandroidjunit"
android:versionCode="1"
android:versionName="1.0" >
中的package="com.wyz.testandroidjunit"
4.右鍵項目中src檔案夾建立一個測試單元類,設定如下:
點Browser瀏覽繼承類AndroidTestCase
5.單元測試類中的內容編寫如下,主要是對項目中類MyFunction的方法測試:
package com.wyz.testunit;import junit.framework.Assert;import com.wyz.myfunction.MyFunction;import android.test.AndroidTestCase;import android.util.Log;public class TestMyFunction extends AndroidTestCase {public void testSayHello() throws Exception{MyFunction myFunction = new MyFunction();myFunction.SayHello(null);}public void testAdd() throws Exception{MyFunction myFunction = new MyFunction();int c = myFunction.Add(3, 4);Log.d("add", String.valueOf(c));Assert.assertEquals(7, c);}}
6.在單元測試類寫好上述代碼後,我們就可以對MyFunction類中的兩個方法進行測試,找到Outline視圖:
如果我們要測試testAdd(),我們只需在Outline中找到對應的testAdd(),然後右擊,Run As->Android Junit Test,
結果如果正確,顯示如下:
如果要顯示錯誤,只需把斷言中的7改成其他數字就可以示範出錯誤了。
註:上面必須先運行安卓模擬器,然後運行單元測試模組,這樣單元測試模組才可以部署安裝。
調試和測試方法很多,還有用寫入檔案,真機調試等,許多東西還得一步步實踐,才能認知!
android開發的時怎進行真機調試
需要開啟 開發 USB調試
串連到電腦後,eclipse運行程式即口,若是開了多個模擬器(真機+模擬器) 則會彈出選擇,讓程式安裝到哪一個模擬器上
Android開發的資料什地方有比較好的? 主要是調試技巧方面的
書的話推薦關東升老師的《android開發案例驅動教程》,裡面講得比較詳細。
還有一個論壇 eoeandroid論壇,百度搜一下就有,裡面有android的最新資訊和android編程的學習作品及教學。有不會的也可以在裡面提問,是個很好的學習平台。
希望能幫到你哈。