归纳总结单元测试分享会上的一些提问

单元测试里,数据都是模拟的,有什么意义呢?

  1. 首先单元测试区别于其他测试,最重要的一点就是快速
  2. 提供必要的参数环境。单元测试顾名思义就是一个个很小的单元,其数据大多都是外界提供的
  3. 模拟数据,保证了在当前提供的数据环境下,测试pass。后期的业务改动有没有影响到之前的测试用例,跑一下就能看出来。
  4. 在构造模拟数据的时候,顺带就能想到边界情况下业务逻辑是否能够正常运行不奔溃,再辅以测试用例来cover。即测试驱动开发TDD。

业务单元测试中,为什么mock接口请求,mock的假数据有什么意义?

  1. 还是说到单元测试这个名字的含义。单元测试的目的是保证测试单元的正常运行。接口请求对于业务测试来说,只是其下的一个单元,测试职责在接口单元测试里考虑
  2. 真实请求,参数构造困难,像token之类经常变动的。且请求受网络环境影响大,容易导致测试失败,但是此时并非是代码问题。
  3. 接口请求一般都是封装在单独工具类里,测试业务模块时,jest测试环境是没法知道网络请求啥时候结束的。就算是通过async/await,也是需要测试模块的单元测试里,能拿到网络请求节点(一般都拿不到的)。

单元测试能带来什么好处,以及缺点是什么?

优点

  1. 保证单元测试覆盖的业务逻辑,在后续的需求迭代中不会出现意外情况
  2. 提升业务开发思维,优化代码结构,增加代码稳定性
  3. 每次发版前,一行命令执行所有单元测试,执行时间也就几秒到几十秒(视单元测试数量)。提前获知异常情况。

缺点

  1. 无法做到端到端(E2E)测试那样模拟真实的用户环境
  2. 测试用例覆盖率,不能完全表示测试用例的覆盖程度,此问题很大程度取决于写测试用例的人。
  3. 用例编写耗时耗力,很多条件语句的测试存在大量重复编码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容