如何从 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 和单元测试目标之间遇到类转换错误

如何对大多数视图使用 Firebase 身份验证的 Swift 应用程序进行单元测试?

从 Swift 测试文件中调用 Objective-C 类

从测试目标看不到 Swift 类

Swift 中的单元测试 | IOS 故事板 |无法转换目标 c 中定义的视图控制器类