1

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

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

编辑(从下面添加我的评论,希望使问题更容易回答。)

我的库有两个目标,一个用于 iOS,一个用于 MacOS。到目前为止,我只将它包含在一个 iOS 项目中,所以这是我目前想要使用的项目。我尝试添加一个 Cocoa Touch Unit Test Bundle 目标,但我的构建失败并且我得到命令 /bin/sh/ failed with exit code 1 和 Failed testing for architecture 'i386' (GC OFF)。我不认为我想在 i386 上运行(至少不是为了测试我的 iOS 目标)而且我在目标设置中找不到任何说 i386 的内容。

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

4

4 回答 4

3

Mac OS X SDK 中有一个用于单元测试捆绑目标的模板。

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

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

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

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

于 2010-06-11T06:32:30.097 回答
0

你能改变活动的可执行文件吗?(它在 Xcode 的 Project 菜单下:Set Active Executable)

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

于 2010-06-10T19:33:02.603 回答
0

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

于 2012-08-27T17:02:27.870 回答
0

在 XCode 9.1 中:

  • 点击File -> New -> Target...
  • 选择MacOS Unit Testing Bundle
于 2017-12-16T07:54:11.260 回答