Android官方开发文档Training系列课程中文版:Activity测试之创建运行测试
原文地址:http://android.xsoftlab.net/training/activity-testing/activity-basic-testing.html
為了驗證在布局與功能上沒有差池,很重要的一點就是需要為每個Activity創建對應的測試類。對每個測試類還需要創建單獨的測試用例,這其中包含測試環境,測試條件以及對Activity測試的測試方法。實現這些便可以進行測試并獲知結果。如果其中一項測試失敗了,這便意味著在代碼中可能存在潛在的問題。
創建測試用例
Activity測試都以結構化的方式實現。要確保將所有的測試放在一個單獨的包中,與被測試代碼區別開來。
依照慣例,測試包的包名應當由應用的包名+后綴”.tests”組成。在完成測試包的創建之后,添加一個Java類以用于測試。依照慣例,該類的名稱應當由要測試的類的類名+后綴”Test”組成。
在Eclipse中創建測試用例的步驟如下:
- a.在工程中新建一個包。
- b.設置包名為< your_app_package_name>.tests(例如,com.example.android.testingfun.tests),并點擊Finish。
- c.在該包名下創建一個類。
- d.設置類名為< your_app_activity_name>Test(例如,MyFirstTestActivityTest),并點擊Finish。
設置測試先決條件
測試先決條件由一系列用于測試的對象組成。設置這些先決條件需要重寫setUp()方法以及tearDown()方法。TestRunner會在測試之前調用setUp()方法,在測試結束之后調用tearDown()方法。開發者可以通過這兩個方法來確保測試被正常初始化以及可以確保在測試結束之后可以及時清理。
在Eclipse中設置測試先決條件:
1.將上面創建好的測試類繼承于ActivityTestCase的任一子類。例如:
2.接下來,在這個類的內部添加構造方法以及setUp()方法,并添加要測試的Activity的變量聲明。例如:
public class MyFirstTestActivityTestextends ActivityInstrumentationTestCase2<MyFirstTestActivity> {private MyFirstTestActivity mFirstTestActivity;private TextView mFirstTestText;public MyFirstTestActivityTest() {super(MyFirstTestActivity.class);}@Overrideprotected void setUp() throws Exception {super.setUp();mFirstTestActivity = getActivity();mFirstTestText =(TextView) mFirstTestActivity.findViewById(R.id.my_first_test_text_view);} }構造方法會在類初始化時由TestRunner調用,而setUp()方法則會在開始測試之前調用。
通常情況下,在setUp()方法內,應當實現以下內容:
- 調用父類的setUp()方法。
- 通過以下步驟初始化先決條件:
- 定義實例變量用于存儲先決條件的狀態。
- 創建并存儲接下來要測試的Activity的引用。
- 持有Activity中需要進行測試的UI組件的引用。
可以通過getActivity()獲取要測試的Activity的引用。
添加測試條件
在進行測試之前,還有一個步驟就是需要驗證前一步是否設置正確,以及需要測試的對象是否已被正確的實例化、初始化。這樣的話,便不需要確認測試本身是否有誤,因為測試的先決條件已經發生了錯誤。依照慣例,用于驗證先決條件的方法被稱為testPreconditions().
例如:
public void testPreconditions() {assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity);assertNotNull(“mFirstTestText is null”, mFirstTestText); }其中的判斷方法來自于JUnit的Assert類。通常情況下可以使用這些判斷方法來驗證需要測試的指定條件是否為true。
- 如果條件為false,那么判斷方法會拋出一個AssertionFailedError異常。該異常由TestRunner拋出。如果判斷失敗,那么可以通過判斷方法的第一個參數得知是哪個條件失敗。
- 如果條件為true,那么測試會順利執行。
在這兩種情況中,TestRunner會繼續執行其它的判斷方法。
添加測試方法
接下來,添加測試方法來驗證Activity的布局與功能。
例如,如果Activity包含了一個TextView,你可以像下面這樣添加一個測試方法來驗證該TextView的文本是否正確:
public void testMyFirstTestTextView_labelText() {final String expected =mFirstTestActivity.getString(R.string.my_first_test);final String actual = mFirstTestText.getText().toString();assertEquals(expected, actual); }testMyFirstTestTextView_labelText()方法用于檢測TextView的默認文本與定義在string.xml中的文本是否一致。
Note: 當命名測試方法時,可以使用下劃線來分開要測試的內容,這種編寫風格可以更容易明確測試的內容。
要執行比較,將期望的值與實際的值傳給assertEquals()方法。如果兩個值不相等,那么將會拋出一個AssertionFailedError異常。
如果添加testPreconditions()方法,那么請將測試代碼放在testPreconditions()之后。
構建運行測試
在Eclipse中進行代碼測試非常容易。
請執行以下步驟:
1.將Android設備連接到計算機。打開Setting菜單,選擇Developer選項,并確保USB調試模式已開啟。
2.在測試的類中選擇RunAs > Android Junit Test.
3.在Android設備選擇對話框中,選擇剛剛連接好的設備,點擊OK。
4.在JUnit界面中,驗證測試是否通過。
總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:Activity测试之创建运行测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GCN-Based User Repre
- 下一篇: Android官方开发文档Trainin