• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Android單元測試與模擬測試

    發表于:2016-05-16來源:推酷作者:Jacks Blog點擊數: 標簽:單元測試
    考慮可讀性,對于方法名使用表達能力強的方法名,對于測試范式可以考慮使用一種規范, 如 RSpec-style。 不要使用邏輯流關鍵字(If/ese、for、do/while、switch/case),在一個測試方法中

      考慮可讀性,對于方法名使用表達能力強的方法名,對于測試范式可以考慮使用一種規范, 如 RSpec-style。

      不要使用邏輯流關鍵字(If/ese、for、do/while、switch/case),在一個測試方法中,如果需要有這些,拆分到單獨的每個測試方法里。

      測試真正需要測試的內容,需要覆蓋的情況,一般情況只考慮驗證輸出(如某操作后,顯示什么,值是什么)。

      考慮耗時,Android Studio默認會輸出耗時。

      不需要考慮測試 private 的方法,將 private 方法當做黑盒內部組件,測試對其引用的 public 方法即可。

      盡可能的解耦對于不同的測試方法,不應該存在Test A與Test B存在時序性的情況。

      II. Android自帶基本的單元測試

      control + shift + R (Android Studio 默認執行單元測試快捷鍵)。

      1. 本地單元測試

      直接在開發機上面進行運行測試。在沒有依賴或者僅僅只需要簡單的Android庫依賴的情況下,有限考慮使用該類單元測試。

      代碼存儲

      如果是對應不同的flavor或者是build type,直接在test后面加上對應后綴(如對應名為 myFlavor 的單元測試代碼,應該放在 src/testMyFlavor/java 下面)。

      src/test/java

      激活測試

      在一個功能測試或驗證的測試方法前面添加 @Test 的annotation。

      Google官方推薦引用

      dependencies {

      // Required -- JUnit 4 framework,用于單元測試,google官方推薦

      testCompile 'junit:junit:4.12'

      // Optional -- Mockito framework,用于模擬架構,google官方推薦

      testCompile 'org.mockito:mockito-core:1.10.19'

      }

      2. 模擬測試

      運行在Android設備或者虛擬機上的測試

      主要用于測試: 單元(Android架構引用相關的單元測試)、UI、應用組件集成測試(Service、Content Provider、etc.)

      代碼存儲:

      src/androidTest/java

      Google官方推薦引用

      dependencies {

      androidTestCompile 'com.android.support:support-annotations:23.0.1'

      androidTestCompile 'com.android.support.test:runner:0.4.1'

      androidTestCompile 'com.android.support.test:rules:0.4.1'

      // Optional -- Hamcrest library

      androidTestCompile 'org.hamcrest:hamcrest-library:1.3'

      // Optional -- UI testing with Espresso

      androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'

      // Optional -- UI testing with UI Automator

      androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'

      }

      常見的UI測試

      需要模擬Android系統環境

      主要三點:

      UI加載好后展示的信息是否正確。

      在用戶某個操作后UI信息是否展示正確。

      展示正確的頁面供用戶操作。

      III. 拓展工具

      1. AssertJ Android

      square/assertj-android

      極大的提高可讀性。

      // 一般的JUnit

      assertEquals(View.GONE, view.getVisibility());

      // AssertJ Android

      assertThat(view).isGone();

      2. Robolectric

      Robolectric

      讓模擬測試直接在開發機上完成,而不需要在Android系統上。

      主要是解決模擬測試中耗時的缺陷,模擬測試需要安裝以及跑在Android系統上,也就是需要在Android虛擬機或者設備上面,所以十分的耗時?;旧厦看蝸韥砘鼗囟夹枰獛追昼姇r間。針對這類問題,業界其實已經有了一個現成的解決方案: Pivotal實驗室推出的 Robolectric 。通過使用Robolectrict模擬Android系統核心庫的 Shadow Classes 的方式,我們可以像寫本地測試一樣寫這類測試,并且直接運行在工作環境的JVM上,十分方便。

      3. Mockito

      Mockito

      快速模擬控制系統架構返回參數。

      不同于Roblectric,Mockito可以通過模擬并控制或修改一些方法的行為。

      // 無論什么時候調用 myQueryObject.getCurrentTime,返回值都會是 1363027600

      Mockito.doReturn((long) 1363027600).when(myQueryObject).getCurrentTime();

      4. Robotium

      RobotiumTech/robotium

      (Integration Tests)模擬用戶操作,事件流測試。

      通過模擬用戶的操作的行為事件流進行測試,這類測試無法避免需要在虛擬機或者設備上面運行的。是一些用戶操作流程與視覺顯示強相關的很好的選擇。

    原文轉自: http://blog.dreamtobe.cn/2016/05/15/android_test/

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>