Unit testing 如何在Xcode中组织库项目的单元测试?
我还不是集成开发环境的爱好者,但我正在努力克服我的偏见,学习Xcode。(Eclipse/CDT是下一个;我在去年尝试的时候也无法让它对我起作用,但这是另一个问题。) 我正在一个新项目中编写一些新代码,该项目将成为一个小型库的一部分。我也想对它进行单元测试。我如何向Xcode解释我正在构建一个(共享)库,但我也想在一个测试程序中使用它,该程序是从不在共享库中的单独源代码编译的 源代码:Unit testing 如何在Xcode中组织库项目的单元测试?,unit-testing,xcode,project-organization,Unit Testing,Xcode,Project Organization,我还不是集成开发环境的爱好者,但我正在努力克服我的偏见,学习Xcode。(Eclipse/CDT是下一个;我在去年尝试的时候也无法让它对我起作用,但这是另一个问题。) 我正在一个新项目中编写一些新代码,该项目将成为一个小型库的一部分。我也想对它进行单元测试。我如何向Xcode解释我正在构建一个(共享)库,但我也想在一个测试程序中使用它,该程序是从不在共享库中的单独源代码编译的 源代码: 原子c 原子h 测试原子 生成的文件: libatom.dylib 测试原子 我已将atom.c和at
- 原子c
- 原子h
- 测试原子
- libatom.dylib
- 测试原子
atom.c
和atom.h
编译到库中。我只是不知道如何组织事情,以便我也可以构建testatom
来链接库。
我假设,当我对这些代码进行排序后,为测试支持代码添加测试atom.c的库将是相对简单的,即使它还不在Xcode控制之下
FWIW,我主要在C语言中工作,而不是在Objective C语言中工作。编辑:参见(我最初链接的文章的最新版本,如下面的评论所述)。还可以看到,虽然您显然还没有使用Obj-C,但设置新目标的基础对于C代码来说是相同的,并且特定于OCUnit的内容非常能代表IDE中单元测试的工作方式。您的项目中需要两个目标;Xcode中的目标生成的产品是库、可执行文件或其他输出 因此,您将有一个目标来生成
libatom.dylib
,我怀疑您已经设置好了,还有另一个命令行可执行目标来生成test atom
可执行文件,供您运行以测试库
添加了测试原子
目标后,您应该获得有关测试原子.c
的信息,并从libatom.dylib
目标中删除其成员资格,并将其添加为新的测试原子
目标的成员。文件的目标成员身份决定构建目标是否尝试编译/复制/链接该文件。(目标对文件的处理取决于它成为成员时添加到的构建阶段。)
您还应该获得Products组中libatom.dylib
条目的信息,并将其作为testatom
目标的成员。这将导致testatom
可执行文件链接到libatom.dylib
最后,获取有关testatom
目标(不是产品)的信息,并在General选项卡中添加对libatom.dylib
目标的依赖项。这将确保构建test atom
目标始终首先构建libatom.dylib
目标。请不要让人们使用“OCUnit测试驱动您的代码”-它已经过时,并且在发布几个月后就已经过时了。首先,它告诉人们下载OCUnit,但自从2005年WWDC发布Xcode 2.1以来,OCUnit就已经包含在Xcode中。请告诉人们“使用Xcode 3和Objective-C进行自动单元测试”。