Android - 單元測試

Android的單元測試有兩種方式:本地單元測試設備單元測試本地單元測試能夠直接運行在本地機器上面的Java Virtual Machine(JVM)。它的特色是運行時間短,執行效率高,可是沒有Android framework的支持,每一個文件均可以進行單獨的單元測試。
而在Android設備上的單元測試,運行的是一個單獨的APK,直接運行到虛擬機或者物理Android設備上,這種單元測試擁有整個App的生命週期和運行環境。
這裏主要介紹以運行在Android設備上的單元測試爲主。javascript

單元測試文件在哪裏?

首先先看下單元測試文件是什麼位置,下面是一個Android項目的基本結構:
java

Android項目結構

其中:android

  • ../app/src/test/java目錄下是本地單元測試的文件目錄。
  • ../app/src/androidTest/java目錄下就是設備單元測試的文件目錄。

知道了單元測試文件的目錄,下面就看下如何配置單元測試環境。git

配置單元測試環境

須要使用單元測試,須要引入單元測試的依賴庫,在AndroidManifest.xml裏面添加uses-librarygithub

<application
        .....
        <uses-library android:name="android.test.runner"/>
    </application>複製代碼

而後再配置單元測試框架的啓動項:app

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jjz">

      <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.jjz" android:label="test"/> </manifest>複製代碼
  • android.test.InstrumentationTestRunner:是Android單元測試其中的一個啓動項,用來啓動單元測試。
  • com.android.test.runner.MultiDexTestRunner:是另外一個單元測試的啓動項用來啓動MultiDex的項目。

這裏設置了android:targetPackage與項目的package相同,這樣當前單元測試和應用程序會運行在同一個進程裏面。
環境配置完成以後,就能夠編寫單元測試的代碼了?框架

編寫單元測試

爲了使用單元測試方便,先在項目中增長一個方法,該方法用來比較兩個字符串的是否相等:單元測試

public class StringUtil {
    public static boolean compare(String source, String other) {
        if (source == null) {
            return other == null;
        } else {
            return source.equals(other);
        }

    }
}複製代碼

在對方法compare進行單元測試,在../app/src/androidTest/java/com.jjz添加文件StringUtilTest.java,文件內容爲:測試

public class StringUtilTest extends AndroidTestCase {
    public void testCompare() {
        Assert.assertFalse(StringUtil.compare(null,"123"));
        Assert.assertTrue(StringUtil.compare("123","123"));
    }
}複製代碼

須要注意的是類名必須使用Test結尾,而且要繼承AndroidTestCase,而單方法必須使用test開頭。
編寫完單元測試以後,就能夠運行了。ui

運行單元測試

../app/androidTest/java文件夾上面,能夠看到運行單元測試的按鈕,如圖所示:

Run all tests

直接點擊 Run all tests,能夠看到單元測試的結果:
測試結果

這樣就完成了一個簡單的單元測試。

源代碼地址:github.com/jjz/android…

相關文章
相關標籤/搜索