閱讀956 返回首頁    go 技術社區[雲棲]


Android Unit Tests

前言

本文主要通過樣例來簡要介紹Android單元測試基於AndroidTestCase類,主要針對sdk或者不涉及ui的但是需要依賴AndroidSDK的,並生成代碼的覆蓋率報告。

Android Unit Tests

單元測試(Android unit tests)是運行在手機或模擬器上的測試,下麵詳細介紹如何進行模擬器或手機進行測試。

gradle配置

基於gradlemaven對比,這裏使用Gradle構建工具為例。

AndroidSDK默認提供基於AndroidTestCase的單元測試支持,首先在build.gradle中增加依賴:

編寫測試與運行


測試工程

 新建一個Android工程,這裏以非常簡單的被測類為例,目錄結構如下:

8b5f6555b84990e079e2fa4da81c4e5ef1fad74c

DemoA.java


public class DemoA {

    public int funtionA(int a, int b){
        return a + b;
    }

    public int funtionB(int a, int b){
        return a * b;
    }
}


DemoTest.java


public class DemoTest extends AndroidTestCase{

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }

    public void testDemoAWithFunctionA(){
        DemoA demoA = new DemoA();
        int i = demoA.funtionA(3, 4);
        assertEquals(7, i);
    }

    public void testDemoAWithFunctionB(){
        DemoA demoA = new DemoA();
        int i = demoA.funtionB(3, 4);
        assertEquals(12, i);
    }
}


setUp() 在測試執行前需要做的一些初始化的事情

tearDown() 在測試結束後,需要做一些事情


運行測試

有了簡單的測試代碼,下麵看如何運行測試。


Android Studio運行測試

1. 如單獨運行某個測試類,打開DemoTest測試類直接點擊運行即可


0f9cdc20d181f16242563b2382b6b6d0807db5f0



2. 如需要全部類執行,直接點擊 


命令行運行測試

也可以通過命令行運行測試:

./gradlew connectedAndroidTest --info

生成報告位置如下 

ba797cb4e9134e5bccd94460a43e02a1bd17304a


覆蓋率統計

單元測試覆蓋率的統計可以使用JaCoCo插件。

build.gradle配置

在模塊build.gradle中增加如下配置:

 78dd275f7f4cde43c48ffc4ccebd872238bdd139



運行測試

./gradlew clean createDebugCoverageReport --info


覆蓋率報告生成位置 

43176e3aab42d6bec9a3bdce6034a7012c6ac0b9

<path_to_your_project>\app\build\reports\coverage\debug\index.html

 

最後更新:2017-10-20 15:33:25

  上一篇:go  提升Android下內存的使用意識和排查能力
  下一篇:go  架構設計 | 互聯網架構“高並發”究竟是啥