美文网首页
【SDK】iOS对已有的项目写UT

【SDK】iOS对已有的项目写UT

作者: Draven_Lu | 来源:发表于2020-01-08 17:23 被阅读0次

    单元测试,XCTestCase,查看覆盖率已经知道怎么写一个简单的UT和查看效果
    然后我就去项目中新开分支实操,然后就遇到一个方向性问题,诺大的项目,我应该从哪里开始呢?

    问题

    • 那么多类和函数,到底哪些需要写单元测试?
    • 有些关键的逻辑实现函数(私有方法),是否需要写UT去测试?
    • 测试类是对应被测试类还是被测试函数?也就是说测试的最小粒度是啥?

    参考

    测试的原则

    • 快速:这样才不会介意去运行
    • 独立:一个测试不应该耦合于另一个测试
    • 可重复:每次测试的结果应该一致
    • 可验证:结果应该是成功/失败,而不是一个解释性的日志文档

    测试的内容

    • 核心功能测试
    • 边界条件
    • 错误处理

    应该测试的对象(回答第一个问题)

    • 1.数据相关
      比如在本地数据存储模块中,我们需要保存不同的数据,这时候我们可以通过单元测试构造不同的测试数据进行保存,查看是否保存成功,数据部分是单元测试最需要覆盖的部分。
    • 2.逻辑相关
      比如在连接模块中,需要对部分请求结果进行过滤,这就是一个逻辑,针对这种逻辑,可以在单元测试中进行测试是否过滤成功,而人工测试则无需关注过滤的逻辑,仅仅需要关注过滤后界面是否正常显示。
    • 3.多状态的模块
      比如在连接模块中,连接的状态就有8种,包括了连通性检查、连接中、已连接等,这些状态能够利用单元测试很好的模拟出来,这样就解决了人工测试下难以模拟不同状态转换的问题。

    问题思考

    一顿查询了之后,再结合自己的项目。我的项目是一个SDK项目。没有UI,只有对外的功能。
    1.没有UI,只有对外暴露的接口,也就是说要保证功能函数没有问题。而这功能函数调用了大量的其他子功能的函数。所以我们要测试的是子功能函数,因为子功能函数最后是不可拆分的函数了(SOLID的S原则)(回答第三个问题)
    2.尽可能的一个类对应一个UT类,这样当你的UT代码多起来的时候,也能看懂。如果你平时开发的时候删除了对应的功能类或者函数,记得把对应的测试代码也删除了。不然时间久了,呵呵哒
    3.对于第二个问题,答案是不需要,既然不用暴露出来,就认为不管你多重要,都不需要外面的调用者关心,不管是真的使用方还是UT。测试case 只关心给的输入是否能对其预期的输出。

    好了,搞到这里就继续回项目写了。

    XCTest 编写过程中的一些问题和技巧中有一些小例子可以帮助理解

    相关文章

      网友评论

          本文标题:【SDK】iOS对已有的项目写UT

          本文链接:https://www.haomeiwen.com/subject/vtpsactx.html