Android Studio 中的单元测试

通常在开发 Android app 的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity)执行一下,运行整个工程跑一下 app,通过打 log 或 debug 的方式来验证。浪费了大量时间,降低了工作效率,虽然最新的 android studio 中提供了 instant run 功能,来提高 android studio 的编译速度,但是我们还是需要了解 android studio 的单元测试功能,其可以很方便的为我们提供功能性测试,所以如果项目中有用到测试数据的时候,可以先进行单元测试,如果可以正常输出数据了,然后再到 UI 中执行,这样会提高一些工作效率。

什么是单元测试:

是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

配置

在 Android Studio 中进行单元测试并不需要什么插件或者过多的配置,Android Studio 本身就集成了测试环境,无论是单纯的 java 代码单元测试还是依赖 Android SDK 的 Android 代码单元测试,都能得心应手。

首先在你的 gradle 中加入 Junit 的依赖,注意这里的依赖方式是测试期间的依赖(testCompile):

新版的 android studio 中添加了对单元测试的支持;如图所示:

  • androidTest.java.[包名]
  • main.java.[包名]
  • test.java.[包名]

mian 目录下为项目代码,androidTest 目录下为编写 Android 测试用例使用,test 目录下为编写Java 测试用例使用。

单元测试可以测试那些内容?

这里需要说明的是 android studio 的单元测试由于只是模拟 android 开发环境,但是其不是真正的 android 开发环境,所以不能测试 UI 功能,不能测试需要硬件支持的功能(比如蓝牙,wifi等),不能测试 App 跳转等等,那么其可以测试那些内容呢?

  • 测试一些数据性的功能,比如加载网络数据
  • 测试SharedPerferences,测试数据库,测试函数等
  • 工具类的测试,比如验证时间,转化格式,正则验证等等

编写Android测试用例

我在 androidTest.java.[包名]文件夹中添加了一个类 testJson,并写了一个方法,完整代码如下:

注意事项:

  • 在 android studio 中,所有的测试代码必须以 test- 作为前缀,不然 android studio 无法识别它为测试代码;

  • 测试用例类需要使用注解:@MediumTest 和 @RunWith(AndroidJUnit4.class)

  • 测试函数需要为 public

  • 测试函数需要添加 @Test 注解

运行测试方法

ctr + shift + R 不用启动 App,即可检验代码的正确与否。

------乐于分享,共同进步,欢迎留言讨论
------Treat Warnings As Errors
------Any comments greatly appreciated
------Talking is cheap, show me the code
------CSDN:blog.csdn.net/u011489043
------GitHub:github.com/selfconzrr

相关推荐
kyriewen112 小时前
WebAssembly:前端界的“外挂”,让C++代码在浏览器里跑起来
开发语言·前端·javascript·c++·单元测试·ecmascript
测试员周周10 小时前
【AI测试功能3】AI功能测试的三层架构:单元测试 → 集成测试 → E2E测试——AI系统测试金字塔实战指南
开发语言·人工智能·python·功能测试·架构·单元测试·集成测试
白云LDC1 天前
Android Studio新建Vecter asset一直显示Loading icons(转圈圈)的解决办法
android·ide·android studio
汽车仪器仪表相关领域1 天前
Kvaser Memorator Professional 5xHS CB:五通道CAN FD裸板记录仪,赋能多总线系统集成测试的旗舰级核心装备
大数据·网络·人工智能·单元测试·汽车·集成测试
测试员周周2 天前
【AI测试功能2】AI功能测试的“不可确定性“难题与应对思路:从精确断言到统计判定的完整方案
大数据·人工智能·python·功能测试·测试工具·单元测试·测试用例
中冕—霍格沃兹软件开发测试2 天前
区块链交易最终一致性测试的核心挑战与实践框架
微服务·架构·单元测试·区块链·集成测试·旅游
怣疯knight3 天前
Windows不安装 Android Studio如何打包安卓软件
android·windows·android studio
测试员周周3 天前
【AI测试系统】第5篇:AI 编码工具抛硬币?我们用 LangGraph 做了个“确定性+AI”的测试系统(附自愈架构)
人工智能·python·功能测试·测试工具·架构·langchain·单元测试
我命由我123453 天前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime