我正在使用 XCode 6 Beta-6 在 Swift 中编写应用程序。 我正在使用 Cocoapods 并且正在创建一些单元测试。
问题是这个:显然不可能有一个项目包含:
1) 用 Swift 编写的项目
2)使用cocoapods安装的一些pod
3) 导入一些pod的Objective-C桥头文件
4) 单元测试
这听起来很奇怪,但请按照我的步骤操作:运行 pod install
后,创建 Objective-C 桥头文件并导入一个 pod:一切正常。
现在编写一些测试:为了测试您自己的类,您必须导入名为“as your project”(或更好,“as the main target”)的模块:在我的“MyAwesomeApp”项目中,我必须编写 在我的测试文件中导入 MyAwesomeApp
。
不幸的是,在这一步 XCode 不会编译:
在我的 import MyAwesomeApp
行中出现错误“Failed to import bridging header '/path/to/MyAwesomeApp/MyAwesomeApp/MyAwesomeApp-Bridging-Header.h”;
并且在 Bridging-Header 文件中出现错误“xxx.h file not found”,排除了导入 pod 的可能性。
此外,如果我不在 Obj-c 桥接文件中导入 pod,项目将可以正常编译。
看起来在导入 Objective-C Bridge Header(带有从工作区中不同子项目中获取的 Objective-C 文件)和用于测试的“主模块”时存在冲突。
请问有解决办法吗?我错过了什么? 谢谢
注意:作为一种解决方法,我可以在 Objective-C Bridge Header 中导入 pod,而不是在我的测试中包含主模块,而是在我的“测试”目标中添加我想要测试的所有类。 这会起作用,但它不是最干净的解决方案(我认为)
最佳答案
如果您查看主要目标build设置,您会看到为“标题搜索路径”设置列出了一堆目录。
您需要将这些值复制到测试目标下,或者您可以尝试修改 Podfile 以包含您的主要目标和测试目标,然后重新运行 install
:
platform :ios, '7.0'
link_with 'mainapp', 'mainappTests'
...
还要注意任何其他可能需要但与 CocoaPods 无关的 header 路径。
并且不要忘记,您的类在任何您想对其进行单元测试的地方都应具有公共(public)方法。
希望这对您有所帮助。
关于xcode - 在 Swift 项目中发布测试和使用 Cocoapods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495225/