swift - 当测试目标从 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 框架...
...最后,单元测试目标被动态注入到正在运行的应用程序中,从而解决了测试目标对应用程序模块的依赖。
但是,显然我的知识存在漏洞。
解决方案
推荐阅读
- ios - 有没有办法以编程方式向 UICollectionView 单元格添加填充?
- angular - 如何在 Angular 中创建一个简单的宿主组件?
- webdriver-io - 是否可以在配置中动态更改 baseURL
- r - R中的自动填充行,每日波动率计算
- java - Azure Cosmos:changeFeedProcessor:错误:必须为此操作提供 PartitionKey 值
- flutter - Flutter Navigator.push 显示空白屏幕
- python - 从两个列表中删除两个集合列表的交集,并将其附加到 python 中的新列表
- python - 将包含字典的字典列表转换为 Pandas 数据框
- c++ - QFile.read() 值转换为 qDebug() 转换为 QDataStream
- javascript - 在同一组件上映射 2 个不同的数组