原文地址:https://developer.android.com/tools/testing/testing_otheride.html
這章主要講解使用命令列來創建測試工程、創建測試類、運行測試和使用Instrumentation 命令。
創建測試工程
創建一個新的測試工程的方法為:
android create test-project -m <main_path> -n <project_name> -p <test_path> |
下面講述上面命令列所涉及到的參數。
Flag |
Value |
Description |
-m或--main |
被測試項目的路徑(相對與該項目包的目錄) |
舉例:如果被測試項目的路徑是source/HelloAndroid,那麼這個參數後面就應該接 ../HelloAndroid |
-n或--name |
測試項目的名字 |
舉例:如果被測項目的名字是HelloAndroid,那麼我們可以定義為 HelloAndroidTest |
-p或--path |
存放測試項目的目錄 |
存放Android tool產生的檔案和目錄。 |
舉例如下:
parker@parker:~$ cd /data/workplace/ parker@parker:/data/workplace$ android create test-project -m ../HelloAndroid -n HelloAndroidTest -p HelloAndroidTest |
更新測試工程
如果已經創建了一個測試工程,但是我們現在想改變它,我們可以使用:
android update test-project -m <main_path> -p <test_path> |
創建測試類
雖然你的測試包可以結合activity、android測試擴充類、Junit擴充或者普通類,但是你應該繼承android測試類別或者Junit類,因為它們提供了最好的測試功能。
如果你通過InstrumentationTestRunner(或者相關的test runner)運行你的測試,它會運行每個類中的所有測試方法。你可以通過使用TestSuit類改變這些行為。
測試包中有提供了Instrumentation的測試類和一些繼承了TestCase的類。這些類可能要覆寫setUp()和tearDown()方法。setUp()主要是為測試設定環境,你可以在這裡初始化一個Intent對象,可以使用intent開啟測試activity。tearDown()主要在完成所有的測試放法後調用,它在移動到下一組測試之前記憶體回收和重新設定。
一般來說,我們也經常把testPreConditions()方法添加到測試類別中。這個方法用來正確的初始化測試應用。如果測試失敗,你知道是初始化出現錯誤。當出現這種情況,進一步測試的結果是有疑問的,除非你不管測試是否成功。
運行測試
1. 我們可以通過ant 快速的編譯和運行android 測試項目。我們可以使用ant來運行測試項目中所有的測試。
2. 我們還可以在模擬器和真實設備中運行測試項目。首先要將被測試的應用和測試工程都編譯到設備中,然後調用adb shell 中的am命令。
$ adb shell am instrument -w <test_package_name>/<runner_class> |
<test_package_name>為測試項目的包名,<runner_class>為android test runner的名字,一般和androidManifest中<instrumentation>對象中的name一致。
下面講述上面命令列所涉及到的參數。
Flag |
Value |
Description |
-w |
None |
保持adb shell開啟直至測試完成 |
-r |
None |
以原始形式輸出測試結果。該選項通常是在效能測試時與-e perf true一起使用 |
-e |
<test_operation> |
提供了以索引值對形式存在的測試選項。Android中提供了多種索引值對,詳細情況可以自己查閱http://developer.android.com/tools/testing/testing_otheride.html#AMSyntax |
舉例如下:
root@android:/ # am instrument -w aexp.junit.test/android.test.InstrumentationTestRunner aexp.junit.ContactTest:... aexp.junit.MathTest:.. Test results for InstrumentationTestRunner=..... Time: 0.204 OK (5 tests) |