首页 > 解决方案 > 当测试目标从 CocoaPods 管理中排除时,为什么不构建单元测试?

问题描述

我希望对 CocoaPods 和单元测试目标之间的交互有一个清晰的了解。

让我们假设一个简单的Podfile

platform :ios, '13.0'

target 'CocoaPodsTest' do
  use_frameworks!

  pod 'FBSDKCoreKit', '~>7.0'
  pod 'Firebase/Analytics', '~>6.8'

  target 'CocoaPodsTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

我的单元测试目标——CocoaPodsTestTests不使用任何测试框架。它只是具有简单的 ol'XCTest断言,可以从应用程序目标执行源代码。我知道它从应用程序目标继承了依赖项,但我没有导入这些模块。在我的单元测试源文件中,我只是@testable import CocoaPodsTest让自己访问internal不同类型的 API。

当我从 中删除单元测试目标Podfile然后执行 apod install时,CocoaPods 停止管理该目标。具体来说,测试目标没有与 CocoaPods 框架链接 - Pods_CocoaPodsTestTests.framework. 还有一些其他的变化,这些都是完全可以预料的。

出乎意料的是 nowCocoaPodsTestTests目标不会构建。它失败并出现错误:缺少所需的模块“Firebase”并指向我已@testable import编辑应用程序模块的行。

为什么我的单元测试目标有第三方依赖?

我以为...

... CocoaPods 从第三方资源创建了一个框架 ...

...该应用程序嵌入并链接了 CocoaPods 框架...

...最后,单元测试目标被动态注入到正在运行的应用程序中,从而解决了测试目标对应用程序模块的依赖。

但是,显然我的知识存在漏洞。

标签: swiftxcodecocoapods

解决方案


推荐阅读