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

问题描述 投票:1回答:4

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

我看到了如何添加目标,但我不知道如何将其设置为像“命令行工具”项目模板那样运行。我尝试添加一个新的“Shell Tool”目标,但我不知道如何让它像一个一样运行。我必须添加到该目标的构建设置是什么?我需要启动哪些文件(main.m?)?

编辑(从下面添加我的评论,希望能让问题更加负责。)

我的库有两个目标,一个用于iOS,另一个用于MacOS。到目前为止,我只将它包含在iOS项目中,所以这就是我现在想要的工作。我尝试添加一个Cocoa Touch Unit Test Bundle目标,但我的构建失败,我得到命令/ bin / sh /失败,退出代码1和架构'i386'的失败测试(GC OFF)。我不认为我想在i386上运行(至少不是为了测试我的iOS目标)而且我在目标设置中找不到任何说i386的东西。

我看到我的项目的活动架构是i386(在Project> Set Active Architecture菜单中),但它不允许我在那里更改它。我的TestApp目标有标准(armv6)作为架构集,我尝试搜索设置,其中没有任何i386。我该如何改变?

cocoa xcode build static-libraries targets
4个回答
2
投票

Mac OS X SDK中有一个单元测试包目标的模板。

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

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

  1. 右键单击组树中的任何内容。从“添加”子菜单中,选择“新目标”。
  2. 在Mac OS X标题下,选择Cocoa。在模板列表中向下滚动,然后选择Unit Test Bundle。单击确定。
  3. 命名您的单元测试包目标。
  4. 将库构建产品(从Products组)添加到unit-test bundle目标的Link Binary with Libraries阶段。
  5. 在任何构建阶段之外,将库目标(从“目标”组)添加到单元测试包目标。这使它成为依赖项,因此测试包目标将在必要时重建库。
  6. 将活动目标设置为测试包目标。

通常,您只需将测试中的代码的源代码文件添加到库目标和测试包目标,但以这种方式执行操作也会测试您将测试包与库链接的能力。如果库有任何会阻止链接的问题,这可能会检测到它们。


0
投票

你能改变Active Executable吗? (它位于Xcode的Project菜单下:Set Active Executable)

您的Shell Tool目标是否在其构建的文件中包含int main(int argc, char* argv[])函数?


0
投票

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


0
投票

在XCode 9.1中:

  • 点击File -> New -> Target...
  • 选择MacOS Unit Testing Bundle
© www.soinside.com 2019 - 2024. All rights reserved.