首页 超级签名 分发托管 带参安装 购买服务 代理中心 行业资讯
登录 注册
基本资料 管理中心 退出登录

    iOS超级签名接口的单元测试

    单元测试实际上就是对开发人员所写的代码接口进行执行、传入特定的参数、返回执行结果,然后对比结果与期望的值是否一致,确定功能是否执行正确。

    ios超级签名单元测试流程

    不同于其他语言,Objective-C可以通过苹果官方的编辑器XCode提供的XCTest框架很方便的进行测试,可以不需要额外的第三方框架进行基础的单元测试。而JavaScript语言(jest)、C语言(CUnit)等需要专门的库才能作测试。

    现在,我们公司iOS开发属于组件化开发,各个组件的代码都是在一个独立的库,工程通过cocoapods管理。这样有一个好处,就是每个库的功能单一,接口少,代码都是由特定的一个或者几个人员维护,开发人员对代码比较熟悉,单元测试都是可以对所有文件的接口进行覆盖测试,还可以通过Xcode直观的看到每个文件的测试覆盖率。在代码入库检视时,检视人把好单元测试的关,很容易推动他人对代码作单元测试,提高代码的质量。

    下面讲一下我是如何做单元测试的

    如何开始单元测试

    每个组件库代码都是一个由cocoapods管理的workspace工程组织的,构建最终输出是一个个.a

    · 创建一个target, 类型为 iOS Unit Testing Bundle

    · 在target下创建一个文件,继承XCTTestCase, 编写单元测试代码

    · 工程选中对应的test target, 设置 Target Dependencies, Link Binart with Libraries 为库的target

    · 编译执行test  target (快捷键 command + U)

    每个测试用例的重复代码可以写在 setUp/tearDown方法里, 分别为公共前置代码编写、资源清理的处理。

    异步接口测试

    针对一些异步执行的接口, XCTest提供了XCTestExpectation来实现。

    由于项目代码不便提供,这边请允许我偷个懒, 从SDWebImage库上摘录一些测试代码O(∩_∩)O哈哈~

    在回调里面,根据传入的参数判断是否符合预期, 是则调用fullfil方法,否则调用报错。

    添加文件测试

    · 添加文件到test target

    · 使用 bundleForClass:获取正确的bundle,再访问bundle路径下的具体文件。

    ·

    ·

    使用OCMock进行代码mock

    对于复杂的对象,可能会有许多成员。但是这些成员是不容易获得的, 我们可以通过OCMock模拟该成员,对部分函数进行打桩,达到期待的结果。

    OCMock是一个库, 通过 podfile 引入该库, 然后根据文档进行操作。具体文档可以访问链接

    使用OHHTTPStubs 对网络接口进行mock

    有些接口需要访问网络才能返回正常的结果,可以使用OHHTTPStubs这个库对网络请求进行打桩,根据请求的request确定是否要进行打桩。

    查看代码覆盖率

    · 工程Edit Scheme -> Test -> Options -> Gather coverage for xxx

    · 跑一遍单元测试, 查看结果

    ·

    ·

Copyright © 2019 X云签 杭州云签科技有限公司 版权所有 备案:沪ICP备2023006948号
微信客服 商务:yz625123
X云签 —— 致力于做专业的内测分发平台。商户在使用过程请勿上传赌博、涉黄、涉毒、非法金融、彩票等违法APP,一旦发现将会封停账号。