Android單元測試之一:基本概念

Android單元測試之一:基本概念

簡單介紹

  單元測試是應用程序測試策略中的基本測試,通過對代碼進行單元測試,一方面可以輕鬆地驗證單個單元的邏輯是否正確,另一方面在每次構建之後運行單元測試,可以快讀捕獲和修復因代碼更改(重構、優化等)帶來的迴歸問題。

爲什麼要進行單元測試?

  • 提高穩定性,能夠明確地瞭解是否正確的完成開發;
  • 快速反饋 bug ,跑一遍單元測試用例,定位 bug ;
  • 在開發週期中儘早通過單元測試檢查 bug ,最小化技術債,越往後可能修復 bug 的代價會越大,嚴重的情況下會影響項目進度;
  • 爲代碼重構提供安全保障,在優化代碼時不用擔心迴歸問題,在重構後跑一遍測試用例,沒通過說明重構可能是有問題的,更加易於維護。

單元測試要測什麼

  • 列出想要測試覆蓋的正常、異常情況,進行測試驗證;
  • 性能測試,例如某個算法的耗時等等。

單元測試的分類

  1. 本地測試( Local tests):只在本地機器 JVM 上運行,以最小化執行時間,這種單元測試不依賴於 Android 框架,或者即使有依賴,也很方便使用模擬框架來模擬依賴,以達到隔離 Android 依賴的目的,模擬框架如 google 推薦的 Mockito;
  2. 儀器化測試(Instrumented tests):在真機或模擬器上運行的單元測試,由於需要跑到設備上,比較慢,這些測試可以訪問儀器(Android 系統)信息,比如被測應用程序的上下文,一般地,依賴不太方便通過模擬框架模擬時崔勇這種方式。

JUnit 註解

  瞭解一些 Jnit 註解,方便後面的測試說明。

Annotation描述
@Test publish void method 定義所在方法爲單元測試方法
@Test(expected=Exception.class) public void method() 測試方法若沒有拋出 Annotation 中的 Exception 類型(子類型也可以)-> 失敗
@Test(timeout=100) public void method() 性能測試,如果方法耗時超過 100 毫秒 -> 失敗
@Before public void method() 這個方法在每個測試之前執行,用於準備測試環境(如:初始化類,讀輸入流等),在一個測試類中,每個 @Test 方法的執行都會觸發一次調用。
@After publish void method() 這個方法在每個測試之後執行,用於清理測試環境數據,在一個測試類中,每個 @Test 方法的執行都會觸發一次調用。
@BeforeClass public static void method() 這個方法在所有測試開始之前執行一次,用於做一些耗時的初始化工作(如,連接數據庫),方法必須是 static 。
@AfterClass public static void method() 這個方法在所有測試結束之後執行一次,用於清理數據(如:斷開數據連接),方法必須是 static 。
@Ignore或者@Ignore(“太耗時”) public void method 忽略當前測試方法,一般用於測試方法還沒準備好,或者太耗時之類的。
@FixMethodOrder(MethodAorters.NAME_ASCENDING) public class TestClass{} 使得該測試類中的所有測試方法都按照方法名的字母順序執行,分別指定 3 個值,DEFAULT、JVM、NAME_ASCENDING。

參考文章

https://www.jianshu.com/p/aa51a3e007e2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章