ios - iOS 单元/应用程序测试目标如何链接到其宿主应用程序中的类?
问题描述
我目前正在尝试将单元测试(准确地说是应用程序测试)添加到我的应用程序(一个非常古老的项目......评论说 iOS 2.0)并且undefined symbols for architecture
当我尝试测试一个类时总是偶然发现,这是在我的主机应用程序中。由于明显的修复还没有奏效,我想深入了解整个过程。如果有人能提供一些启示,将不胜感激:)
从我到目前为止收集到的信息:
单元测试目标需要一个主机应用程序。这在“TEST_HOST”中指定。此外,它还在 BUNDLE_LOADER 中指定。
要测试的目标需要提供符号。所以“复制期间剥离调试符号”应该是NO。
需要启用要测试的 Taget 才能测试“启用可测试性”= YES
有些人需要将部署后处理设置为 NO
在 testtarget 中,hostapp 应该“允许测试主机应用程序 API”
当链接器链接测试文件时,它会在某处(指定此路径的确切位置)搜索来自主机应用程序的目标文件和符号。然后在链接成功后,它将单元测试“插件”部署到应用程序插件文件夹中并开始测试。
正如你所看到的,这是一个相当粗略的理解。因此,如果您可以添加细节(无论多么微不足道),我将非常感激。
解决方案
我才发现我还没有回答这个问题...
在我的情况下,丢失的符号是编译库的结果,可见性设置为隐藏。如果是这种情况,则测试无法找到符号,因为 lib 没有向公众提供它们。更改用于测试的编译命令以将可见性设置为默认值会有所不同。
推荐阅读
- php - PHP-在多维数组中搜索键
- kubernetes - Spring Cloud Dataflow Kubernetes - 流外部 IP
- reactjs - 为什么我可以 console.log 值但不能 setState?
- python - Django 2.2 静态/媒体文件未显示/处理
- javascript - highcharts 中一张图表上的多个时间线
- c++ - 如何识别与 websocketpp 的连接
- ios - 如何修复 iOS 崩溃“崩溃:WebThread EXC_BREAKPOINT”
- bash - 我与某些字母键(例如,o)的自定义键绑定不起作用
- python - 对具有不同数据类型的 python 列表进行排序
- amazon-web-services - 具有 Cloud Formation 的 Api Gateway S3 代理不会接受存储桶 ARN,但会接受所有存储桶