Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在Xcode中组织库项目的单元测试?_Unit Testing_Xcode_Project Organization - Fatal编程技术网

Unit testing 如何在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

我还不是集成开发环境的爱好者,但我正在努力克服我的偏见,学习Xcode。(Eclipse/CDT是下一个;我在去年尝试的时候也无法让它对我起作用,但这是另一个问题。)

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

源代码:

  • 原子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进行自动单元测试”。