代码之家  ›  专栏  ›  技术社区  ›  Jonathan Leffler

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

  •  5
  • Jonathan Leffler  · 技术社区  · 15 年前

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

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

    源代码:

    • 原子c
    • 原子H
    • 测试原子c

    生成的文件:

    • 迪尔利布
    • 测试原子

    我有 atom.c atom.h 编译到库中。我只是不知道如何组织事情,以便我也可以建立 test-atom 链接到库。 我假设当我排序之后,为测试支持代码添加库,那么test atom.c将相对直接前进——即使它还没有在xcode控制下。

    fwiw,我主要在c工作,而不是目标c。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Chris Hanson    15 年前

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

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

    一旦你添加了 测试原子 目标,你应该得到信息 test-atom.c 并移除它的 会员 迪尔利布 目标,并将其添加为新的 测试原子 目标。文件的目标成员身份决定了构建目标是否会尝试编译/复制/链接该文件。(目标对文件的处理取决于当它成为成员时添加到哪个构建阶段。)

    您还应该获得 迪尔利布 进入您的产品组,并使 那个 一个成员 测试原子 目标也是。这将导致 测试原子 链接到的可执行文件 迪尔利布 .

    最后,获取 测试原子 在“常规”选项卡中,添加 附属国 迪尔利布 目标。这将确保 测试原子 目标将始终首先生成 迪尔利布 目标。

        2
  •  2
  •   Community CDub    7 年前

    编辑:参见 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中的工作方式。