在非测试目标中使用XCTest

Bad*_*Cat 2 xcode objective-c ios xctest swift

我正在围绕XCTest编写一个可重用的框架,用于我们的几个项目的UI测试.为此,我创建了一个Cocoa Touch Framework项目,我想通过pod分享.

是否可以将XCTest包含在这样的项目中(没有额外的测试目标)?即使我已经XCTest.framework在构建阶段进行链接,我也会收到无法找到XCTest模块的错误.

imn*_*sov 9

你应该添加$(PLATFORM_DIR)/Developer/Library/FrameworksFramework 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
Run Code Online (Sandbox Code Playgroud)

  • 通过使用更具体的DEVELOPER_FRAMEWORKS_DIR作为值,可以略微改善这一点.它解析为与$(PLATFORM_DIR)/ Developer/Library/Frameworks相同的目录 (3认同)
  • 从 Xcode 9 开始,`DEVELOPER_FRAMEWORKS_DIR` 不再解析为 `PLATFORM_DIR` 的子路径 - 因此 `$(PLATFORM_DIR)/Developer/Library/Frameworks` 现在是正确的搜索路径。 (2认同)