初步了解鸿蒙的单元测试基本 原创 精华

即构李航
发布于 2021-8-25 15:50
浏览
1收藏

初步了解鸿蒙的单元测试基本

概述

单元测试对大部分人来说可能有些陌生,一般公司也不会要编写单元测试,但实际上小型的 单元测试可以带来优秀的代码质量,并且单元测试体量小,因此更容易设计,执行,记录以及分析结果。尤其像我们 ZEGO 即构音视频 SDK ,有些接口在 app 上没有体现,那么单元测试也能够测的更完整。接下来以鸿蒙的 DevEco Studio工具为例,来演示如何做单元测试。

创建第一个测试用例

  1. 在自己的项目里选择需要单元测试的类,单机右键选择[Generate],就会出现以下弹窗,选择 [Test] 即可。
    初步了解鸿蒙的单元测试基本-鸿蒙开发者社区

  2. 做完第一步操作后会出现一个新的弹窗, 华为的开发工具默认选择的是 [JUnit3] 这里大家可以选择使用 [JUnit4] ,[JUnit3]中,测试类需要继承junit.framework.TestCase类, 而在 [JUniy4] 则不用, 另外 [JUnit4] 使用的是注解,写起来更方便,我个人也推荐使用 [Junit4], 因为用注解实在是太香了。
    初步了解鸿蒙的单元测试基本-鸿蒙开发者社区

  3. 按照上图点击确定后会创建出一个单元测试类,那么我们在上面加一个 @FixMethodOrder 注解就好,FixMethodOrder可以指定该类的方法执行顺序,内置了3种模式,3种模式区别如下:

类型 说明
@FixMethodOrde(MethodSorters.DEFAULT) 默认顺序(无序随机)执行类的方法
@FixMethodOrde(MethodSorters.JVM) 按照 JVM 得到的方法顺序
@FixMethodOrde(MethodSorters.NAME_ASCENDING) 按照方法名顺序执行
我一般用的是 JVM ,按照定义的方法顺序执行,比如我们 即构音视频 SDK 需要先初始化SDK,再登录房间,再进行推流,再进行拉流,需要4个步骤按顺序执行,用这个模式可以处理前置条件。

初步了解鸿蒙的单元测试基本-鸿蒙开发者社区

  1. 在定义的函数上加一个 @Test 注解,说明该函数是单元测试函数,在 run 单元测试的时候会先跑第一个函数。
    初步了解鸿蒙的单元测试基本-鸿蒙开发者社区

  2. 使用 [assertNotNull] 来判断创建 SDK 引擎是否成功,如果 [SDK] 返回 [null] 说明第一个函数测试失败,另外创建引擎后可以把 [SDK] 对象作为静态对象,这样在单元测试里可以让多个函数共享一个对象。

其实还有很多断言函数,可以参考如下:

类型 说明
assertEquals(expected, actual) 比较2个对象是否相等
assertNotEquals(first, second) 查看2个对象是否不相等
assertNull(object) 查看对象是否为空
assertNotNull(object) 查看对象是否不为空
assertSame(expected, actual) 查看两个对象的引用是否相等
assertNotSame(unexpected, actual) 查看两个对象的引用是否不相等
assertTrue(String message, boolean condition) 查看运行的结果是否为 [true]
assertFalse(String message, boolean condition) 查看运行的结果是否为 [false]
assertArrayEquals(String message, arr1[] expecteds, arr2 [] actuals) 查看两个数组是否相等
assertThat(String message, arr1[] expecteds, arr2 [] actuals) 使用Matcher做自定义的校验
  1. 点击运行单元测试
    初步了解鸿蒙的单元测试基本-鸿蒙开发者社区
    运行后在左下角能看到该方法执行结果。

总结

鸿蒙的单元测试用的是[JUnit]还是非常容易上手的,单元测试只是测试一个方法单元,不是测试一整个流程,在进行系统测试前可以先使用单元测试自测,出错后修复成本更低,列如我们 ZEGO 即构音视频 SDK 在发布新的版本会进行大量的测试,为了保证质量 我们不仅仅会通过单元测试,自动化模拟业务的接口测试,最后再会经过完整链路的人工测试,保证交付出去的 SDK 稳定性,同时也希望更多的开发者能重视单元测试。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-8-26 11:30:57修改
5
收藏 1
回复
举报
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

非常好的实例分享,单元测试确实对开发十分重要。

回复
2021-8-26 10:18:07
jokerisme
jokerisme

如何测试含有context的方法,比如测试从raw中加载配置文件

回复
2021-9-22 15:52:34
回复
    相关推荐