出于单元测试的目的,我想在 Xcode 中创建一个 iPhone 项目目标,其中包括所有发布应用程序文件,以及一些包含对 UI 单元测试有用的代码的其他文件。

我可以通过复制原始应用程序目标来做到这一点;但是,这样做的问题是,每次我将新的源文件添加到应用程序目标时,我还需要将其添加到 UnitTestUI 目标。这没什么大不了的,只是总是记住向两个目标添加文件很不方便。

是否有某种方法可以设置依赖项,以便添加到原始应用程序目标的每个文件也自动添加单元测试目标?

有帮助吗?

解决方案

在Xcode中,您可以创建彼此直接相关的目标。在添加新目标时,有许多非产品构建目标可以在其他类别中为此提供帮助,具体取决于您的设置的简单性或复杂程度。为主要项目目标直接依赖而创建运行单元测试的特定目标非常常见,并且由Apple和许多博客记录。

但是,在您的情况下,您可能需要对新的UI测试目标进行大量调整,但一旦设置完成,它将非常容易维护。不知道你的具体情况,不可能给你一步一步的答案,但这里是一般的指导方针(根据你的情况调整):

  1. 创建原始目标的副本,因为大多数设置都是相同的。
  2. 选择新目标并打开检查员(⌘ I)
  3. 直接相关性下,点击+按钮,然后选择您的主要目标。
  4. 根据需要设置新目标,使用额外的文档/来源/规则或其他。
  5. 如果你喜欢拖放东西,你也可以将原始目标(从目标显示三角形下方)拖到新目标中,它会自动设置依赖关系。

    现在,选择您的测试目标作为活动目标,它将始终使用这些规则构建。此外,如果您在主目标中添加/更改源,则在构建测试目标时将正确地重建它...不需要记住也将源文件添加到测试目标。我建议花一些时间阅读各种Xcode文档并使用大量可用的目标模板......从长远来看,它确实有助于提高产品的使用效率。如果您知道如何,即使是非常大或复杂的项目,也可以在Xcode中轻松完成许多漂亮的事情。

其他提示

不,没有。您是否希望单元测试目标中的每个文件都有特殊原因?这将包括main.m和您未测试的所有类(例如您的视图类)。事实上,如果main.m包含在您的单元测试中,那么您的单元测试如何才能正常运行?

我通过将大部分应用程序构建为静态库来解决这个问题,该库链接到应用程序和单元测试目标。

我的项目中的目标如下所示:

  • libMyApp
    • 编译.m文件
  • 我的应用程序
    • libMyApp(依赖项)
    • 与库的链接:libMyApp.a
  • UITest.app
    • libMyApp(依赖项)
    • 与库的链接:libMyApp.a

这样我就可以添加 .m 文件仅发送到“libMyApp”目标,并让它们在应用程序和测试中可用,甚至不需要重新编译。

唯一的问题是静态库似乎不支持 Objective-C 类别,所以我仍然必须将它们分别添加到每个目标中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top