无法将 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 Libraries
的 Build Phases
设置中 linked 的所有依赖项解决了这个错误复制到测试目标 Link Binary with Libraries
的 Build 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。
我正在尝试在我的 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 Libraries
的 Build Phases
设置中 linked 的所有依赖项解决了这个错误复制到测试目标 Link Binary with Libraries
的 Build 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。