向 Swift 单元测试目标添加类型函数
Posted
技术标签:
【中文标题】向 Swift 单元测试目标添加类型函数【英文标题】:Add a type function to a Swift unit test target 【发布时间】:2015-07-18 06:14:51 【问题描述】:如何让一个类型函数(在扩展中定义)对 Swift 中的测试目标可见?如果我的项目中有以下扩展:
extension NSData
class func XOR(inputData: NSData, withKey key: NSData) -> NSData
...
return NSData(bytes: output.baseAddress, length: inputData.length)
XOR
函数对主项目可见,但在测试目标中不可见。我的测试文件中也有@testable import MyModule
。 (顺便说一句,有趣的是,添加在扩展中的变量对测试目标是可见的)。
【问题讨论】:
【参考方案1】:可以通过三种方式(我记得)使函数在您的测试目标中可见。
-
将您的测试目标添加到包含扩展名的文件的目标成员中。
将函数从
internal
(通过省略访问修饰符隐式设置)提升到public
。
升级到 Xcode 7 测试版并使用 Swift 2 的新 @testable
属性来导入您的模块。这样做会将您的 internal
变量/方法/等隐式提升为 public
,以使它们在测试目标中可见。
@testable import MyModule
【讨论】:
感谢您的快速响应。我已经有了@testable import
,但还是看不到类型功能
@NSTJ 抱歉耽搁了。我无法重现该问题,并且不确定您为什么会看到这种行为。
我想我一定是在做一些傻事才会发生这种情况。当我有 2 秒的时间来了解这一点时,我会发布一些代码。感谢您的回复。以上是关于向 Swift 单元测试目标添加类型函数的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 单元测试中,我在 App 和单元测试目标之间遇到类转换错误
如何从 Swift 单元测试访问测试目标中存在的 Objective-C 代码?