阅读956 返回首页    go 阿里云 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  架构设计 | 互联网架构“高并发”究竟是啥