【发布时间】:2016-02-22 11:22:16
【问题描述】:
我之前在 Objective-C 中进行单元测试的方法如下:
- 调用公共方法:没问题
- 调用私有方法:在您的单元测试文件中创建该类的类别,并将私有方法的签名放入该类别中
目前,我有以下内容:
- 在 ObjC 中开发的类
- 用 Swift 开发的协议
- 用 Swift 开发的该类的单元测试
该类(直接在其公共接口 (.h) 中)符合该协议。我的单元测试中有一个类实例,但不知何故,我无法通过该实例调用协议中声明的方法。
现在,旧的类别解决方案不适用于扩展。当我在扩展中添加一些方法签名时,我收到“声明中期望函数体”的错误消息。
如何以最佳方式使用 Swift 调用函数?
PS:我不想在类的公共接口中再次声明该方法,这是一个丑陋的解决方案。
【问题讨论】:
-
您是否尝试在 Swift 测试类中使用
@testable import <Module>导入模块?它应该完全按照您的意愿行事,即“开放”对测试类的私有内容的访问,而不强制您更改可见性。这是what they say:“在您的测试源代码中使用@testable import {ModuleName},使所有公共和内部例程可由XCTest 目标使用,但不能由其他框架和应用程序目标使用。”跨度> -
记住; @testable 仅使受保护的成员可用于测试,私有方法、函数和参数仍然不可用。
-
这行不通,伙计们。
标签: objective-c swift unit-testing objective-c-category