xcode - 在 Swift 项目中发布测试和使用 Cocoapods

标签 xcode unit-testing swift cocoapods

我正在使用 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/

相关文章:

swift - 如何在编码函数中修复此 if/let 语句?

ios - 如何在 Localized.strings 中添加基本本地化文件

ios - iPad 在 iOS 6 上使用 iPhone Storyboard而不是 iPad Storyboard

ios - 如何使用 inappSettings 设置 2 个不同的设置页面

Ruby Test :Unit, 如何知道测试套件中每个测试用例的失败/通过状态?

c++ - 使用 GTest 进行回调单元测试

ios - 如何使 UILabel 出现和消失 5 次?

ios - 添加约束以使图像成为屏幕尺寸的 1/4

ios - 一次构建 ios 应用程序,发布到多个设备

sql-server - 如何在 SQL Server 中对数据库进行单元测试?