【问题标题】:Add a type function to a Swift unit test target向 Swift 单元测试目标添加类型函数
【发布时间】: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。 (顺便说一句,有趣的是,添加在扩展中的变量对测试目标是可见的)。

【问题讨论】:

    标签: ios swift cocoa-touch xctest


    【解决方案1】:

    可以通过三种方式(我记得)使函数在您的测试目标中可见。

    1. 将您的测试目标添加到包含扩展名的文件的目标成员中。
    2. 将函数从internal(通过省略访问修饰符隐式设置)提升到public
    3. 升级到 Xcode 7 测试版并使用 Swift 2 的新 @testable 属性来导入您的模块。这样做会将您的 internal 变量/方法/等隐式提升为 public,以使它们在测试目标中可见。
    @testable import MyModule
    

    【讨论】:

    • 感谢您的快速响应。我已经有了@testable import,但还是看不到类型功能
    • @NSTJ 抱歉耽搁了。我无法重现该问题,并且不确定您为什么会看到这种行为。
    • 我想我一定是在做一些傻事才会发生这种情况。当我有 2 秒的时间来了解这一点时,我会发布一些代码。感谢您的回复。
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2021-05-31
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多