无法将 main swift 类 导入测试目标?

Can't import main swift classes into test target?

我正在尝试在我的 iOS 应用程序中测试 类。我正在尝试通过将 import Pickle 添加到我的 PickleTests.swift 的顶部,将包含我所有 类 的应用程序中的目标 Pickle 导入到我的测试目标 PickleTests测试文件,但我不断收到错误消息。

我一直收到的错误是:"Failed to import bridging header (path to bridging header)"(桥接头的路径显示在错误中,而不是括号中)。

我已经尝试将 Pickle 目标的构建设置中的 "Defines module" 设置为 "Yes",但它仍然不起作用。我还在构建设置中验证了它具有桥接头文件的正确路径。

关于如何设置我的测试有什么想法吗?我在 Xcode 6.3.2。如果您需要任何其他信息,请告诉我。

在新标签页中打开图片以查看大图。

非常感谢@matt 帮我解决了这个问题!

右键单击图片并在新选项卡中打开它们以查看大图。

正如在 https://github.com/CocoaPods/CocoaPods/issues/2695 上所讨论的那样,问题似乎在于将 Cocoapods 作为项目的一部分。解决问题的 link 底部附近的答案涉及单击您的应用程序设置,然后单击您的项目 Info(不是您的任何目标设置)。在那里你会看到你的 Configurations 设置:

您还会注意到配置设置中有两个目标,您的测试目标配置设置将设置为 none 而您的主要目标将 linked 到 Cocoapods .解决方法是将测试目标旁边的 None 值更改为与主要目标相同的值:

所以现在它们都 link 变成了 Cocoapods。确保您的主要目标在其 Build Settings 中将 Defines module 设置为 Yes,构建您的项目,测试文件中的错误应该消失。

此外,在我完成此修复后,我遇到了另一个错误,其中 linker 抛出一个错误,抱怨我的测试目标中缺少一​​个库。这个丢失的库是我在我的项目中的另一个依赖项,我通过确保在我的主要目标 Link Binary with LibrariesBuild Phases 设置中 linked 的所有依赖项解决了这个错误复制到测试目标 Link Binary with LibrariesBuild Phases 设置中。

您不必这样做。您可以在 Podfile 中使用 link_with。在你的情况下你会这样做。

link_with 'Pickle', 'PickleTests'

然后pod update

FWIW,在 Xcode 7 上,使用注释导入:@testable。 示例:

import Pickle
@ImportTests

然后您将能够在代码完成和编译中看到类。 来源:https://www.natashatherobot.com/swift-2-xcode-7-unit-testing-access/

在您的测试之上导入模块class

@testable import myModuleName

您可以在 Target->Build Settings-> Product Module Name

上找到您的模块名称

然后您可以使用属于该模块的任何 class。无需一一导入 classes。