为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?

Posted

技术标签:

【中文标题】为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?【英文标题】:Why does compiling my XCode project work with Apple-(B)uild and fail to compile with Apple-(U)nit tests?为什么编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译? 【发布时间】:2013-06-08 11:15:02 【问题描述】:

在使用 XCode 4.6 时,我的问题是我想知道使用 Apple-B(编译我的源代码)与我认为是编译我的源代码并运行单元测试命令的 Apple-U 之间的区别。

为什么前者构建成功而后者构建不成功?我的错误甚至没有出现在测试文件中,它在两种情况下都应该编译的源文件中。

【问题讨论】:

啊,它可能是在 Apple-U 的情况下构建的不同目标(即测试目标) 【参考方案1】:

您的评论可能是正确的。试试这个:

选择构建错误相关的文件 确保文件检查器可见(Option + Command + 1,或查看 > 实用程序 > 显示文件检查器) 在文件检查器中有一个标题为“目标成员”的部分 确保您的文件已针对您的单元测试目标进行检查

如果您的项目使用文件夹(文件夹图标为蓝色)而不是组(文件夹图标为黄色),那么您必须选择***文件夹才能查看文件检查器中的“目标成员”部分。在这种情况下,您不会在单个文件上设置目标成员身份,而是在***文件夹上设置。所有文件和子文件夹都从其​​***文件夹继承目标成员资格。

【讨论】:

感谢!我很惊讶 xcode 不会自然地将 .m 文件包含在单元测试项目的构建中。虽然我一直在搞乱测试目标负载,试图了解它的结构! @TheSenator 据我所知,单元测试目标对 Xcode 没有特殊意义,因此管理目标完全取决于您。尽管 IDE 的一点帮助肯定会很好,但很难取得平衡:IDE 过多的“有用”干扰会变得烦人。我不确定您对测试目标结构有什么不了解,但您当然知道可以在哪里提问 :-)

以上是关于为啥编译我的 XCode 项目可以使用 Apple-(B)uild 并且无法使用 Apple-(U)nit 测试编译?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Apple 的 Clang(来自 Xcode 5)为 arm64 制作 typeinfos private_extern?

xcode 4.6 目标构建设置缺少“Apple LLVM 编译器 4.2 - ...”部分

为啥 XCode 4 在构建过程中找不到我的 .h 文件?

为啥我的 Xcode 编译器告诉我我使用了值类型,即使我使用了类?

当Apple拒绝我因为我的应用程序名称不可用时,我可以在Xcode中更改我的项目名称吗

为啥我的 Apple Watch 复杂功能不显示任何内容?