向 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 代码?

将 objc 动态框架与另一个 objc 动态框架链接会使 swift 单元测试目标失败

无法在单元测试项目中的 Swift 中读取 JSON 文件

Xcode 单元测试 - 添加一个用于所有测试类的通用函数

单元测试 WKNavigationDelegate 函数 swift