如何从 Swift 单元测试访问测试目标中存在的 Objective-C 代码?
Posted
技术标签:
【中文标题】如何从 Swift 单元测试访问测试目标中存在的 Objective-C 代码?【英文标题】:How do I access Objective-C code that exists in the test target, from a Swift unit test? 【发布时间】:2015-09-12 15:32:08 【问题描述】:我正在尝试对我编写的一些 Swift 类进行单元测试。他们需要访问仅存在于我的测试目标中的 Objective-C 类。
我可以通过在测试目标“Objective-C Bridging Header”构建设置中指定应用程序的桥接头来访问属于我的应用程序目标的 Objective-C 类。但是,我不能使用它在我的测试目标中公开 Objective-C 类。
如何从 Swift 测试类访问仅存在于我的测试目标中的 Objective-C 类?
【问题讨论】:
【参考方案1】:我添加了一个 second 桥接头文件,这个文件属于我的测试目标。在第二个标头中,我从我的应用程序中导入了该标头,以及我在测试中需要的 Objective-C 代码。
称之为“MyAppTests-BridgingHeader.h”:
#import "MyApp-Bridging-Header.h"
#import "MagicalRecord.h"
#import "MagicalRecord+Setup.h"
然后我将其设置为测试目标构建设置中的桥接头:
我的测试现在可以访问在我的主桥接头中暴露给 Swift 的所有 Objective-C 类,以及仅在测试中暴露的所有额外的 Objective-C 类。
【讨论】:
以上是关于如何从 Swift 单元测试访问测试目标中存在的 Objective-C 代码?的主要内容,如果未能解决你的问题,请参考以下文章
module.map 用于从测试目标访问主目标中的(Swift 和 Objective-C)类
在 Swift 单元测试中,我在 App 和单元测试目标之间遇到类转换错误