将unit testing目标添加到xcode – 未能导入桥接头不会消失

我在我的XCode项目中添加了一个新的测试目标。 我的项目有Swift代码和Objective-C代码,并有一个桥接头。 在将桥接头添加到UnitTesting的构建设置或执行import MyTarget ,我收到错误:

failed to import bridging header

我试过了:

  • 将桥接头添加到项目,unit testing和主目标的构建设置。
  • 更改defines modulesYes
  • 将桥接头文件移动到根文件夹。

我也试过制作一个样本项目,它构建并且运行良好。 把我所拥有的一切都带到一个干净的新项目中不是一个选择。

如果你使用Pod作为包管理器,必须设置搜索路径等。给出一个简单的方法,

尝试在Podfile中添加它

 target 'YourProductTests' do inherit! :search_paths # Pods for testing end 

pod install

这个对我有用。

如果上述解决方案不适合您。 尝试手动设置

  1. 单击您的测试目标 – >构建设置 – >选项卡:全部和组合 – > Swift编译器 – 代码生成 – >目标C桥接标题:添加您的xxx-bridging-header

  2. 检查“搜索路径”,根据主目标设置Framework Search PathHeader Search PathsLibrary Search Path 。 也许有些搜索路径在这里丢失,再次手动添加。

在这一点上,我从来没有必要import MyTarget来使unit testing在Swift中工作。

常见解决方案

  • 我假设你试过了,但是不清楚你是否同时将你的桥接头添加到你的应用目标和测试目标?
  • 另一个可能不太理想的选择是在测试目标中添加桥接头,以便您实际拥有2个桥接头。 它们应该看起来一样,并且是一个很好的测试。
  • 如果使用$(SRCROOT)引用桥接头路径,请确保正在评估它以纠正路径。
  • 如果所有其他方法都失败了,您应该将.xcodeproj文件差异与您的工作项目进行差异,并匹配可能不同的任何相关值。

桥接头系统并不完美,但这里有一些我遇到过的问题。

我遇到了同样的问题。 我做了以下操作,解决了“导入桥接头失败”的问题。

脚步:

  1. 选择项目 – >构建设置 – >搜索’ 定义模块 ‘ – >给’是’
  2. 复制Objective-C桥接头路径
  3. 选择您的测试目标 – >构建设置 – > Swift编译器 – 常规 – > Objective-C桥接头 – >给出桥接头路径。
  4. 确保测试目标的“ 标题搜索路径 ”包含ios目标中的所有标题。 如果缺少任何标头,请添加它们。
  5. 建立。

参考: 请参阅此链接。