2009-08-23 73 views
5

我还不是集成开发环境的粉丝,但我试图克服偏见并学习Xcode。 (Eclipse/CDT是下一个;我无法在去年尝试去为我工作,但这是一个单独的问题。)如何在Xcode中组织单元测试库项目?

我在一个新项目中写了一些新代码, )一个小型图书馆。我也想单元测试它。我如何向Xcode解释我正在构建(共享)库,但是我也想在测试程序中使用它,从不在共享库中的独立源编译?

的源代码:

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

生成的文件:

  • libatom.dylib
  • 测试原子

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

FWIW,我主要是用C工作,而不是目的C.

回答

4

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

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

一旦你添加了test-atom目标,你应该得到的信息对test-atom.clibatom.dylib目标删除其会员,并将其添加为新的目标test-atom的成员。文件的目标成员身份决定了构建目标是否会尝试编译/复制/链接该文件。 (目标确实与文件什么取决于什么构建阶段将其添加当它是由一个成员。)

你也应该获取信息对您的产品组libatom.dylib条目,使成员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中的单元测试的工作原理。

+4

请不要指出人们“用OCUnit测试驱动你的代码” - 它已经过时了,并且自发布几个月后已经过时了。首先,它告诉人们下载OCUnit,但自Xcode 2.1发布以来,OCDC自2005年WWDC以来一直包含在Xcode中。请指出人们使用Xcode 3和Objective-C进行“自动单元测试”,而不是使用http://developer.apple.com/mac/articles/tools/unittestingwithxcode3.html。 – 2009-08-24 00:10:04

+0

感谢您指向新文章! – 2009-08-24 06:01:37