1. 程式人生 > >Android Studio 進行單元測試完整教程

Android Studio 進行單元測試完整教程

前言

  • 為了這個AndroidStudio的單元測試,從下午搞到晚上才搞明白咋操作。
  • 我學一個新知識總是那麼坎坷,經歷無數的錯誤路徑,才可能找到正確的路在哪兒。

我的AndroidStudio

這裡寫圖片描述

我的AndroidStudio是1.5.1版本,但是進行單元測試應該很早的版本就可以了,至少可以追溯到1.0

注意事項

當你google查詢AndroidStudio單元測試時,有大量的資料教程,但是都不完整,至少跟著教程一步步的是無法看到自己想看的效果的。AndroidStudio自帶的單元測試功能是不需要修改gradle或者AndroidManifest.xml檔案的。直接編寫測試用例即可。

編寫測試用例步驟

以下以一個由AndroidStudio一步步建立的全新工程為例

在src目錄下會包含三個目錄:

這裡寫圖片描述
- androidTest.java.[包名]
main.java.[包名]
test.java.[包名]

- mian目錄下為專案程式碼,androidTest目錄下為編寫Android測試用例使用,test目錄下未編寫Java測試用例使用。

gradle檔案

  • 增加testCompile 'junit:junit:4.12' 用於Java編寫執行Java測試用例。

編寫Java測試用例

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 { private static final String TAG = "ExampleUnitTest"; @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } }

測試用例的執行才是最關鍵的點

這裡寫圖片描述

  • 開啟測試用例類,即上面的ExampleUnitTest
  • 在AndroidStudio的介面做側邊欄下部,有兩個工具欄(Build Variants 和 Favorites)
  • 點選 Build Variants,Test Artifact 選項框選擇Unit Tests(同理跑Android測試用例選擇Android Instrumentation Tests)
  • 在AndroidStudio的介面做側邊欄上部有一個structure工具標籤,(如果找不到,可以通過 工具欄–View–Tool Windows–Structure 開啟此工具標籤),開啟此標籤就可以看到此測試用例類的所有方法
  • 滑鼠選中要測的方法,右鍵–Run [方法名],即可進行Java用例測試。

編寫Android測試用例

我在androidTest.java.[包名]資料夾中添加了一個類TestAndroidClass,該類派生自InstrumentationTestCase,並寫了一個方法,完整程式碼如下:

import android.test.InstrumentationTestCase;


public class TestAndroidClass extends InstrumentationTestCase {


    private static final String TAG = "TestAndroidClass";

    public void test() throws Exception{
        assertEquals(2, 2);
    }
}
  • 測試用例執行方法同Java測試用例,但是 Build Variants 的 Test Artifact 選項框一定要更改為 Android Instrumentation Tests。
  • 注意事項,在android studio中,所有的測試程式碼必須以test-作為字首,不然android studio無法識別它為測試程式碼。(以test為字首的方法是高亮的,非test的字首則不是,通過這一點也可以證明)

最後的話:
Build Variants的選擇很重要,如果選擇Unit Tests,Android的測試用例就會不被識別,反之Java的測試用例不被識別,所以在跑測試用例時一定選對標籤,我就是在這裡耗費了大量時間,偶然在stackoverflow上看到有人提了一句,感謝。

文章部分內容的編寫參考了這個部落格
官方測試用例教程在這裡