1. 程式人生 > >Android Studio中單元測試某個類中的一個方法

Android Studio中單元測試某個類中的一個方法

我們在使用Android Studio工具進行開發的時候,有時候會單獨測試一個類中的一個方法,由於去執行整個專案會消耗的時間比較多,我們只想獨立的測試這個方法,那麼我們在AS中應該怎麼做呢?

    大致在網上搜了一下,基本上全都是採用類似斷言之類的。在AS中我們新建的專案,裡面預設會有單元測試的例子。


我們看這個ExampleUnitTest類中的程式碼:

package wxt.example.com.actionbar;
import org.junit.Test;
import static org.junit.Assert.*;
/**
 * To work on unit tests, switch the Test Artifact in the Build Variants view.
*/ public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } }

這個assertEquals(4, 2+2); 就是前面預先傳入一個4,然後第二個引數是我們測試的程式的返回值,如果兩個相同就會測試通過。但是我們如果需要測試一個沒有返回值的方法要如何做呢,例如獲得手機聯絡人的方法:

public class ReadContantsEngine {
    //讀取手機聯絡人
public static void 
readContants(Context context) { ContentResolver contentResolver = context.getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/contacts"); Uri uridatas = Uri.parse("content://com.android.contacts/data"); Cursor cursor = contentResolver.query(uri, new String[]{"_id"}, null, null, null
); //迴圈取出資料 while (cursor.moveToNext()){ System.out.println(cursor.getString(0)); String id = cursor.getString(0);//獲取到聯絡人的id Cursor cursor1 = contentResolver.query(uridatas, new String[]{"data1", "mimetype"}, "raw_contact_id = ?", new String[]{id}, null); while (cursor1.moveToNext()){ String data = cursor1.getString(0); String mimetype = cursor1.getString(1); if (mimetype.equals("vnd.android.cursor.item/name")){ System.out.println(""+id+"個使用者 名字:"+data); } else if (mimetype.equals("vnd.android.cursor.item/phone_v2")){ System.out.println(""+id+"個使用者 電話:"+data); } } cursor1.close(); } cursor.close(); } }

這個readContacts方法的返回值是void,我們執行這個方法的時候通過控制檯檢視輸出,就能判斷出此方法有沒有正確執行,在這裡使用斷言就不太適用了,我們可以在androidTest包下面建個MyTest類,然後繼承AndroidTestCase類

之後我們在這個類中寫上要執行的方法

public class MyTest extends AndroidTestCase {
    public void testRead(){
        ReadContantsEngine.readContants(getContext());
}
}
傳入的引數為上下文物件,在這裡說一下上下文的三種表現形式:

1,XActivity.this
         Activity的例項
         Activity的上下文,對話方塊必須要使用該上下文,對話方塊是Activity的一部分


 2, getApplicationContext
Context的例項
        土司或者佈局都可以使用該上下文,
        土司不屬於Activity,關閉Activity 也不影響土司的顯示
        土司是Window的一部分


   3, getContext
        虛擬的上下文,主要用在單元測試中

接下來直接在MyTest類上點選右鍵-->Run MyTest


然後如果方法沒問題的話,就會在控制檯打印出結果了。