Android Unit Tests

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 本文主要通过样例来简要介绍Android单元测试基于AndroidTestCase类,主要针对sdk这种不涉及ui的但是需要依赖AndroidSDK的场景,并可以生成代码的覆盖率报告,这也是我们oss-android-sdk中的一个应用,通过这种测试可以保证sdk的稳定运行和性能上的保证,可以增强测试的粒度,目前我们oss-android-sdk覆盖率已达95%。

前言

本文主要通过样例来简要介绍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() 在测试结束后,需要做一些操作可以在这个方法里边进行编写,例如一些测试数据的还原操作等。

test开头的方法即我们编写的测试case


运行测试

有了简单的测试代码,下面看如何运行测试。


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

 

目录
相关文章
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
569 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
503 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
895 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
677 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
258 0
|
5月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
448 6
|
7月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
505 11
|
11月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
3105 77
|
7月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
323 0
|
8月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
386 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡