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

6

我还不是一个集成开发环境的粉丝,但我正在努力克服我的偏见并学习Xcode。(Eclipse/CDT是下一个;去年我试过,但没有成功,但那是另一个问题。)

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

源代码:

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

生成的文件:

  • libatom.dylib
  • test-atom

我已经将atom.catom.h编译成了库。我只是不确定如何组织这些东西,以便我也可以构建test-atom来链接库。

我假设当我解决了这个问题后,添加库以支持test-atom.c的测试支持代码将相对简单 - 即使它还没有在Xcode控制下。

顺便说一下,我主要使用C而不是Objective C。

2个回答

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`目标。

2

5
请不要把人们引向“使用OCUnit测试代码”,这篇文章已经过时了,自从发表几个月后就已经严重过时了。首先,它告诉人们去下载OCUnit,但自从2005年WWDC发布Xcode 2.1以来,OCUnit就已经包含在Xcode中了。请改为引导人们阅读“使用Xcode 3和Objective-C进行自动化单元测试”http://developer.apple.com/mac/articles/tools/unittestingwithxcode3.html。 - Chris Hanson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接