Android日誌輸出、單元測試
由於這幾天睡得晚,導致第二天都沒有精神,還暈暈的聽課,效率低,我不能熬夜了。下面我來講講今天學習的知識點吧。
一、 單元測試
有了測試以後我們遇到bug的時候就好解決了。
單元測試需要以下幾步:
1. 首先要在AndroidManifest.xml中加入如下代碼:
<uses-library android:name=”android.test.runner”/>
這行代碼必須只能放在<application></ application>元素之內,與<activity></activity>平級。
<instrumentation android:name=”android.test.InstrumentationTestRunner”
Android:targetPackage=”cn.class3g.action”android:label=”Tests for My App”>
這行代碼放在<manifest></manifest>之中。這裏的targetPackage指定的包和應用的package相同。如果不相同,就會出現找不到單元測試用例的錯誤。
2. 編寫單元測試代碼 測試類必須繼承自AndroidTestCase類。
3. 執行測試
讓我們來看一個具體的測試項目的實現吧:
1. 創建項目:
創建名爲JunitTest的項目
2.在功能清單文件中配置單元測試環境;
打開功能清單文件,添加上面所述的代碼,最終代碼如下;
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.class3g" android:versionCode="1" android:versionName="1.0" > <uses-sdkandroid:minSdkVersionuses-sdkandroid:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner"/> <activity android:label="@string/app_name" android:name=".JunitHaoActivity" > <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="cn.class3g" android:label="Tests/> </manifest> |
新建測試用例
首先在項目位置,右擊新建一個UserTests類,在創建這個類的時候要繼承AndroidTestCase類;
注意:如果測試方法內部遇到異常,建議直接拋出,而不要捕獲異常。異常拋出後會被測試框架獲取,之後在控制檯顯示出來,方便我們瞭解異常信息。
集體的類文件如下:
package cn.class3g; packagecom.sharpandroid.unitandlog; import junit.framework.Assert; import android.test.AndroidTestCase; import android.util.Log; public classUserTest extends AndroidTestCase{ private static final StringTAG = "MyTest"; public void testSave()throws Throwable{ int i= 4+8; Assert.assertEquals(5,i); } } |
Assert類在此的作用是判斷所得到的結果與期望值的關係。這裏判斷i是否等於5。如果相等則通過,不相等,則拋出異常。
運行測試用例:
首先要進入大綱視圖(outline),如果默認的界面中沒有的話,可以通過以下步驟:
window-----showView----outline 就可以了!
在大綱視圖中找到自己的測試類,然後展開,找到集體的方法,然後選定右擊,選擇Run as----Android Junit Test 就可以了;
觀看結果條,如果是紅色說明沒有通過,代碼有問題,如果是綠色就說明測試通過了。
二、日誌輸出
我們在開發Android應用時,控制檯不會打印出字符串,該字符串會在LogCat中打印出來。在程序中進行信息輸出,一般採用android.util.Log類的靜態方法就可以實現。Log類所輸出的日誌的內容從少到多分別是ERROR,WARN,INFO,DEBUG,VERBOSE,對應五種不同類型的首字母,分別對應有Log.e( )、Log.w( )、Log.i()、Log.d( )、Log.v( )五種靜態方法。
讓我們來編寫一個日誌輸出的測試類吧
package cn.class3g; import junit.framework.Assert; import android.test.AndroidTestCase; import android.util.Log; public class UserTest extendsAndroidTestCase{ private static final StringTAG = "tag"; public void testSave()throws Throwable{ int i= 4+8; Log.i(TAG, "i = " + i); Assert.assertEquals(5,i); } } |
說明:
Log.i(String tag,String msg);
tag:爲這條信息定義一個標籤,在開發時通常採用其所在類的類名,這樣方便我們追蹤輸出的信息。也方便我們在看到信息時知道其由哪個類輸出。
msg:該參數爲希望輸出的信息的內容。 一般將第一個參數定義成一個靜態常量。
本文轉自:http://www.spasvo.com/news/html/201515132928.html