如何在Xcode中组织库项目的单元测试?

Jon*_*ler 5 xcode unit-testing project-organization

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

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

源代码:

  • atom.c
  • atom.h
  • 测试atom.c

制作文件:

  • libatom.dylib
  • 测试原子

我有atom.catom.h编译到库中.我只是不确定如何组织事情,以便我也可以建立test-atom与图书馆的链接.我假设当我对它进行排序时,为测试支持代码添加库,test-atom.c将是相对简单的 - 即使它还没有在Xcode控制之下.

FWIW,我主要在C而不是Objective C.工作.

Chr*_*son 5

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

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

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

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

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