【Android開發-6】瞭解內情,我們需要一些調試和測試手段,android-6

來源:互聯網
上載者:User

【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編程的學習作品及教學。有不會的也可以在裡面提問,是個很好的學習平台。
希望能幫到你哈。
 

聯繫我們

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