【问题标题】:Can't import main swift classes into test target?无法将主要的 swift 类导入测试目标?
【发布时间】:2015-08-30 10:54:22
【问题描述】:

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

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

我已尝试将 Pickle 目标的构建设置中的“定义模块”设置为“是”,但它仍然不起作用。我还在构建设置中验证了它具有正确的桥接头文件路径。

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

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

【问题讨论】:

  • 你只添加import就得到这个错误,没有任何实际测试?
  • @matt 没错。我可以在问题中添加图片
  • 我建议的第一件事是您只需删除测试目标和所有测试文件并创建一个新的测试目标。由于您还没有实际测试,所以您没有什么可失去的...... :)
  • 我看到实际上在 CocoaPods github 站点上对此进行了讨论:github.com/CocoaPods/CocoaPods/issues/2695
  • 如果你已经解决了你的问题,你应该回答你自己的问题,然后在几天内接受你自己的答案。一切天经地义!并且可能对其他人有所帮助。

标签: ios xcode swift import xctest


【解决方案1】:

非常感谢 @matt 帮助我完成这个!

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

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

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

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

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

【讨论】:

  • 太棒了!工作过
  • 谢谢。您能否提供更多信息,1.我们是否必须添加每个文件,如 LoginVC,HelpVC 和相关的模型文件来测试目标? Compile sources in Build Phases 应该与主要目标相同吗? 2.需要加Link Binary with Libraries吗?我们在我们的应用中添加了自定义框架,在从测试目标访问主要目标文件时面临问题。有什么想法/建议吗?
【解决方案2】:

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

@testable import myModuleName

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

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

【讨论】:

    【解决方案3】:

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

    link_with 'Pickle', 'PickleTests'
    

    然后pod update

    【讨论】:

    • link_with 现已弃用,建议使用abstract_target
    【解决方案4】:

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

    import Pickle
    @ImportTests
    

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

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 2016-03-16
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多