我正在使用XCode 6 Beta-6在Swift中编写一个应用程序。我正在使用Cocoapods,并且正在创建一些单元测试。
问题是:显然不可能有一个包含以下内容的项目:
1)用Swift编写的项目
2)部分实例使用cocoapods安装
3)导入一些pod的Objective-C桥头文件
4)单元测试
这听起来很奇怪,但请遵循我的步骤:在运行pod install之后,创建Objective-C桥头并导入一个pod:一切正常。现在编写一些测试:为了测试您自己的类,您必须导入名为"as your project“(或者更好地说是"as main target”)的模块:在我的"MyAwesomeApp“项目中,我必须在测试文件中编写import MyAwesomeApp。
不幸的是,在这一步,XCode不能编译:在我的import MyAwesomeApp行中,出现错误"Failed to import bridging header '/path/to/MyAwesomeApp/MyAwesomeApp/MyAwesomeApp-Bridging-Header.h";
在桥头文件中出现错误"xxx.h file not file“,排除了导入pod的可能性。
此外,如果我不导入Obj-c桥文件中的pod,项目将会正常编译。
看起来在导入Objective-C Bridge头文件(与取自工作区中不同子项目的Objective-C文件)和用于测试的“主模块”之间存在冲突。
你知道有什么解决方案吗?我遗漏了什么?谢谢
注意:作为一种变通方法,我可以在Objective-C Bridge头中导入pod,并在" test“目标中添加所有我想要测试的类,而不是在我的测试中包含main模块。这是可行的,但它不是最干净的解决方案(我认为)
发布于 2014-08-28 19:33:06
如果你看一下你的主要目标构建设置,你会看到有一堆目录列出了“头搜索路径”设置。
您需要将这些值复制到测试目标下,或者可以尝试修改Podfile,使其同时包含主目标和测试目标,然后重新运行install
platform :ios, '7.0'
link_with 'mainapp', 'mainappTests'
...还要注意可能需要的、与CocoaPods无关的任何其他头路径。
别忘了,无论你想在哪里对类进行单元测试,你的类都应该有公共方法。
希望这能有所帮助。
发布于 2014-10-31 18:43:43
也许您已经在项目级别配置了"Objective-C Bridging Header“设置,因此"Test”目标继承了该值,并且这个"Test“目标可能没有与Cocoapods链接。
按照@sergio的建议使用link_with,或者在“项目->信息->配置”中为“测试”目标设置“Pod*.debug/release”配置。
发布于 2015-12-26 09:30:15
除了Podfile中的link_with命令之外,我还必须在测试文件中导入我的主项目模块。这样,类和方法就不需要公开了。
请注意特殊的@testable annotation
@testable import my_tutorial_app
此外,我的主项目名称中包含非字母数字字符,我必须将它们替换为下划线_
https://stackoverflow.com/questions/25495225
复制相似问题