iOS单元/应用程序测试目标如何链接到其主机应用程序中的类?

时间:2018-11-07 16:52:36

标签: ios xcode clang xctest

我目前正在尝试将单元测试(准确地说是应用程序测试)添加到我的应用程序(一个相当老的项目中。一个注释说是iOS 2.0),并且在尝试测试某个应用程序时总是偶然遇到undefined symbols for architecture类,在我的hostapp中。由于明显的修复程序尚不起作用,因此我想深入了解整个过程。如果有人能提供一些帮助,我们将不胜感激:)

根据我到目前为止的收集:

  • 单元测试目标需要一个主机应用程序。在“ TEST_HOST”中指定。此外,它也在BUNDLE_LOADER中指定。

  • 要测试的目标需要提供符号。因此,“复制期间的条调试符号”应该为否。

  • 需要启用测试标签以测试“启用可测试性” =是

  • 有些人需要将Post Deployment Processing设置为NO

  • 在测试目标中,主机应用应“允许测试主机应用API”

链接器链接测试文件时,它会在某个位置(在此位置确切指定了路径)中搜索主机应用程序中的目标文件和符号。然后,在成功链接之后,它将单元测试“插件”部署到apps插件文件夹中并开始测试。

如您所见,这是一个很粗略的理解。因此,如果您可以添加详细信息(尽管很小),我将非常感激。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我还没有回答这个问题...

在我的情况下,缺少符号是在将可见性设置为隐藏的情况下编译库的结果。如果是这种情况,测试将无法找到符号,因为 lib 不会向公众提供它们。更改用于测试的编译命令以将可见性设置为默认值会有所不同。