在非测试目标中使用 XCTest
Posted
技术标签:
【中文标题】在非测试目标中使用 XCTest【英文标题】:Using XCTest in non-Test Target 【发布时间】:2017-06-14 03:29:24 【问题描述】:我正在围绕 XCTest 编写一个可重用的框架,用于对我们的几个项目进行 UI 测试。为此,我创建了一个我想通过 pod 共享的 Cocoa Touch Framework 项目。
是否可以将 XCTest 包含到这样的项目中(没有额外的测试目标)?即使我在构建阶段链接了XCTest.framework
,我也收到了无法找到 XCTest 模块的错误。
【问题讨论】:
在此处查看不涉及 Pod 的替代方法的答案:***.com/questions/54147582/… 【参考方案1】:您应该将$(PLATFORM_DIR)/Developer/Library/Frameworks
添加到框架目标的构建设置中的Framework Search Paths
中。基本上,您不必将您的框架与XCTest.framework
链接起来。
另外,如果您要通过 pod 共享框架,您可以将以下代码添加到您的 podspec 文件中:
Pod::Spec.new do |s|
...
s.weak_framework = "XCTest"
s.pod_target_xcconfig =
'FRAMEWORK_SEARCH_PATHS' => '$(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks"',
...
end
【讨论】:
太棒了!感谢您的快速帮助! 如何从这样的 pod 导入 XCUITest Target 中的文件? 这可以通过使用更具体的 DEVELOPER_FRAMEWORKS_DIR 作为值来稍微改进。它解析为与 $(PLATFORM_DIR)/Developer/Library/Frameworks 相同的目录 从 Xcode 9 开始,DEVELOPER_FRAMEWORKS_DIR
不再解析为 PLATFORM_DIR
的子路径——因此 $(PLATFORM_DIR)/Developer/Library/Frameworks
现在是正确的搜索路径。以上是关于在非测试目标中使用 XCTest的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 中配置和运行目标 C 测试用例--XCTest