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

时间:2015-06-15 03:04:34

标签: ios xcode swift import xctest

我正在尝试在我的iOS应用中测试这些类。我正在尝试通过将Pickle添加到我的PickleTests测试文件的顶部,将我的应用中的目标import Pickle导入我的测试目标PickleTests.swift,但是我一直在收到错误。

我一直收到的错误是:"无法导入桥接头(桥接头的路径)" (桥接头的路径显示在错误中,而不是括号中)。

我试过设置"定义模块"在Pickle的构建设置中,定位到"是",但它仍然无法正常工作。我还在构建设置中验证了它具有桥接头文件的正确路径。

有关如何设置测试的任何想法?我在Xcode 6.3.2上。如果您需要任何其他信息,请与我们联系。

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

4 个答案:

答案 0 :(得分:30)

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

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

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

您还会注意到配置设置中有两个目标,并且您的主目标配置设置将设置为无,而您的主目标将链接到Cocoapods。修复在于将测试目标旁边的None值更改为主目标具有的相同内容:enter image description here

所以现在它们都与Cocoapods有关。确保您的主要目标Defines module的{​​{1}}设置为Yes,构建您的项目并且测试文件中的错误应该消失。

另外,在我做了这个修复之后,我遇到了另一个错误,其中链接器抛出一个错误,抱怨我的测试目标中缺少一​​个库。这个丢失的库是我项目中的另一个依赖项,我通过确保复制了Build Settings设置中我的主要目标Link Binary with Libraries中链接的所有依赖项来解决此错误在其Build Phases设置中转到测试目标Link Binary with Libraries

答案 1 :(得分:4)

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

link_with 'Pickle', 'PickleTests'

然后pod update

答案 2 :(得分:1)

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

import Pickle
@ImportTests

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

答案 3 :(得分:0)

在测试类的顶部导入模块

@testable import myModuleName

您可以在Target->Build Settings-> Product Module Name上找到您的模块名称

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