【问题标题】:How to organize unit testing of a library project in Xcode?如何在 Xcode 中组织库项目的单元测试?
【发布时间】:2010-11-22 03:18:48
【问题描述】:

我还不是集成开发环境的粉丝,但我正在努力克服自己的偏见并学习 Xcode。 (接下来是 Eclipse/CDT;当我去年尝试时,我也无法让它为我工作,但这是一个单独的问题。)

我正在一个新项目中编写一些新代码,该项目将成为一个小型库(的一部分)。我也想对它进行单元测试。我如何向 Xcode 解释我正在构建一个(共享)库,但我也想在测试程序中使用它,从不会在共享库中的单独源编译?

源代码:

  • atom.c
  • atom.h
  • test-atom.c

制作的文件:

  • libatom.dylib
  • 测试原子

我已将atom.catom.h 编译到库中。我只是不确定如何组织事物,以便我还可以构建 test-atom 以与库链接。 我假设当我完成排序后,为 test-atom.c 添加测试支持代码的库会相对简单——即使它还不受 Xcode 控制。

FWIW,我主要使用 C 而不是 Objective C。

【问题讨论】:

    标签: unit-testing xcode project-organization


    【解决方案1】:

    您的项目中需要两个目标; Xcode 中的目标生成一个产品,它是一个库、可执行文件或其他一些输出。

    因此,您将有一个目标来生成libatom.dylib,我怀疑您已经设置了它,还有另一个命令行可执行目标来生成test-atom 可执行文件供您运行以测试您的库。

    添加test-atom 目标后,您应该获取test-atom.c 的信息并从libatom.dylib 目标中删除其成员身份,并将其添加为新@ 的成员987654326@目标。文件的目标成员资格决定了构建目标是否会尝试编译/复制/链接该文件。 (目标对文件的作用取决于它成为成员时添加到的构建阶段。)

    您还应该在您的 Products 组中获取有关 libatom.dylib 条目的信息,并使 that 成为 test-atom 目标的成员。这将导致test-atom 可执行文件链接到libatom.dylib

    最后,获取test-atom 目标(不是产品)的信息,并在“常规”选项卡中,在libatom.dylib 目标上添加依赖项。这将确保构建test-atom 目标将始终首先构建libatom.dylib 目标。

    【讨论】:

      【解决方案2】:

      编辑:见Automated Unit Testing with Xcode 3 and Objective-C(我最初链接到的文章的更新版本,如下面的评论中所指出的)。另请参阅What is the best way to unit test Objective-C code? 虽然您显然还没有使用 Obj-C,但设置新目标的基础对于 C 代码将是相同的,并且 OCUnit 特定的东西非常代表单元测试在 IDE 中的工作方式。

      【讨论】:

      • 请不要将人们指向“用 OCUnit 测试你的代码”——它已经过时了,并且在发布几个月后就已经完全过时了。一方面,它告诉人们下载 OCUnit,但自 WWDC 2005 发布 Xcode 2.1 以来,OCUnit 已包含在 Xcode 中。请将人们指向“使用 Xcode 3 和 Objective-C 进行自动化单元测试”developer.apple.com/mac/articles/tools/…
      猜你喜欢
      • 2012-05-05
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多