代码之家  ›  专栏  ›  技术社区  ›  zekel lepture

我有一个Xcode静态库项目,如何向它添加一个测试目标,以便在那里运行它?(而不是在链接到它的项目中。)

  •  1
  • zekel lepture  · 技术社区  · 15 年前

    我希望能够在库目标中测试库代码,这样就不必切换到单独的项目来运行它。

    我知道如何添加一个目标,但我不知道如何像“命令行工具”项目模板那样设置它来运行。我尝试添加一个新的“shell工具”目标,但我不知道如何使它像一个一样运行。我必须向该目标添加什么生成设置?什么文件(main.m?)我需要启动它吗?

    编辑 (在下面添加了我的评论,希望能让问题更容易回答。)

    我的图书馆有两个目标,一个是iOS,一个是MacOS。到目前为止,我只把它包含在一个iOS项目中,所以这是我目前想要与之合作的项目。我尝试添加一个CocoaTouchUnit测试包目标,但是我的构建失败了,我得到了命令/bin/sh/failed,退出代码1,架构“i386”(gc关闭)测试失败。我不想在i386上运行(至少不想测试iOS目标),在目标设置中找不到任何i386。

    我看到项目的活动架构是i386(在“项目”>“设置活动架构”菜单中),但它不允许我在那里更改。我的testapp目标使用标准(armv6)作为体系结构集,我尝试搜索这些设置,但其中没有i386。我该怎么改变?

    4 回复  |  直到 7 年前
        1
  •  2
  •   Peter Hosey    15 年前

    在mac os x sdk中有一个单元测试包目标的模板。

    请注意,_156;bundle_157;是测试目标的构建产品:目标生成单元测试包。它不要求您的实际产品(库、应用程序等)是一个捆绑包;实际上,您的实际产品是什么并不重要。

    也就是说,当您有一个静态库时,您可以做一些不同的事情:

    1. 右键单击组树中的任何内容。从__Add_子菜单中,选择__New Target_。
    2. 在mac os x标题下,选择cocoa。在模板列表中向下滚动并选择单元测试包。单击确定。
    3. 命名单元测试包目标。
    4. 将库构建产品(从产品组)添加到单元测试包目标的链接二进制与库阶段。
    5. 在任何构建阶段之外,将库目标(从目标组)添加到单元测试包目标。这使它成为依赖项,以便测试包目标在必要时重建库。
    6. 将活动目标设置为测试包目标。

    通常,您只需将正在测试的代码的源代码文件添加到库目标和测试包目标,但这样做也会测试您将测试包链接到库的能力。如果库中有任何问题会阻止链接到它,这可能会检测到它们。

        2
  •  0
  •   Lyndsey Ferguson    15 年前

    您可以更改活动的可执行文件吗?(位于xcode:set active executable中的项目菜单下)

    shell工具目标是否包含int main(int argc, char* argv[]) 在它的一个构建文件中起作用?

        3
  •  0
  •   Raffi Khatchadourian    13 年前

    对于Mac,您可以添加新目标。选择命令行工具模板。

        4
  •  0
  •   Benjineer ebidel    7 年前

    在XCODE 9.1中:

    • 点击 File -> New -> Target...
    • 选择 MacOS Unit Testing Bundle