| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> Android 单元测试实践 -> 正文阅读 |
|
[开发测试]Android 单元测试实践 |
什么是单元测试定义:单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。 什么是JUnitJUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。 使用JUnit编写单元测试的好处在于:
对于高质量的代码来说,测试覆盖率应该在80%以上。 单元测试的好处
在编写单元测试的时候,我们要遵循一定的规范:
线上更多暴露的都是异常场景,所以在单元测试中有必要重点验证相关异常逻辑。 如何编写单元测试添加依赖新建Android项目中app模块的build.gradle中会自动添加如下依赖:
在写单元测试的时候,有些对象在运行时是没有真实构造的,这个时候我们可以使用mock框架来模拟出一个可用的对象,需要添加如下依赖:
添加用例首先添加一个测试类,这里我添加一个简单的计算类:
然后在方法名上右键鼠标,如下图所示,点击"Test": 如果之前该类没有创建过Test类,则会提示你没有找到对应的测试类,点击“create Test”即会出现如下弹框:
点击ok按钮,会让你选择创建单元测试用例 还是 集成测试用例,如下图所示: 这里我们选择单元测试用例。 然后我们就会在test目录下找到对应的包名和测试文件了,如下图所示: 注解单元测试的时候用的最多的是上面3个注解: @Before : 表示该方法在其他所有的Test方法执行之前都会执行一遍。一般用于初始化。 @After :表示每个Test方法执行结束后,都会执行一遍After方法。一般用于回收相关资源 @Test:标识该方法是一个测试方法 添加用例我们在刚才生成的CalculateTest类中增加如下代码:
这里我们用到了Junit支持的断言来判断用例是否通过:
异步测试
如上代码所示,针对异步场景,我们可以使用到 CountDownLatch 类来针对性的暂停执行线程,直到任务执行完成后再唤醒用例线程。
Mock测试有些时候我们不免会引用Android框架的对象,但是我们单元测试又不是运行在真实设备上的,在运行时是没有构建出真实的Android对象的,不过我们可以通过mock程序来模拟一个假的对象,并且强制让该对象的接口返回我们预期的结果。 1.添加mock依赖引用,前面添加依赖项的时候有提到:
2.导入静态会让代码简洁很多,这步不是必要的:
3.创建mock对象
4.进行测试插桩
下面我们看一个简单的例子。 首先我们在Calculate 类中新增一个简单的方法,获取TextView的文本信息:
然后我们在CalculateTest类中新增测试方法:
最后运行这个用例,正常通过。 参数化测试当一个方法有参数时,我们可以批量验证不同参数值,对应的用例是否通过,而不用写多遍类似的代码 1.首先参数化测试,要求我们对测试类添加如下注解
2.定义参数集合 - 方法必须定义为 public static 的 - 必须添加@Parameterized.Parameters 3.定义接收参数和期望参数对象 4.增加对应的用例 我们看下面的例子: 首先我们在Calculate 中添加一个有参数的add方法:
接着修改测试类
@1 : 给类添加注解RunWith(Parameterized.class) @2 : 添加数据集合方法,用@Parameterized.Parameters 注解修饰 @3 : 添加输入参数和期望参数 @4 : 添加构造方法,供给输入参数和期望参数赋值 @5 : 添加测试方法,直接使用输入参数和期望参数进行验证 异常测试异常验证通过@Test注解参数来指定:
看下面具体的例子:
测试类如下:
这里可以注意以下几点:
运行用例
点击左侧绿色箭头,会弹出如上图菜单,单机Run 即可执行该用例。
如上图所示,选中测试类文件,右键执行 "Run 类名",就会批量执行该类所有的用例了
如上图所示,右键包名,执行"Run Test in 包名" 即可执行该包下所有类对应的用例 导出测试报告在执行完测试用例之后,我们可以导出测试报告,如下图所示: 查看测试覆盖度如上图所示:点击converage按钮,在右边窗口会弹出如下覆盖情况,这里从3个方面统计测试覆盖度:
最后,我们可以导出覆盖报告.
|
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:32:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |