6

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

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

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

4

3 回答 3

4

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

然而,在您的情况下,您可能需要对新的 UI 测试目标进行大量调整,但是一旦设置好,维护起来就会非常容易。不知道您的确切情况,不可能给您一个逐步的答案,但这里是一般准则(调整以适应您的情况):

  1. 创建原始目标的副本,因为您的大部分设置都是相同的。
  2. 选择您的新目标并打开检查器 (⌘I)
  3. Direct Dependencies下,单击 + 按钮并选择您的主要目标。
  4. 根据需要设置新目标,使用额外的文档/源/规则或其他内容。

如果您喜欢拖放东西,您也可以将原始目标(从目标显示三角形下方)拖到新目标中,它会自动设置依赖关系。

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

于 2009-01-05T09:59:09.437 回答
0

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

于 2009-01-05T02:02:49.617 回答
0

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

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

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

这样我可以.m只将文件添加到“libMyApp”目标,并在应用程序和测试中都可以使用它们,甚至不必重新编译它们。

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

于 2010-12-09T18:36:41.107 回答