如何在每个构建中自动执行单元测试?

时间:2011-07-13 02:08:48

标签: xcode unit-testing xcode4 dependencies

如何在每次构建时自动执行单元测试?

我尝试将单元测试目标添加到项目目标作为依赖项,但似乎没有运行实际测试。

4 个答案:

答案 0 :(得分:8)

将“构建后测试”构建设置设置为“是”。选择产品> Build for>构建测试以构建项目并运行测试。

Xcode 5更新

Xcode 5不支持Test After Build构建设置。我不知道如何在Xcode 5中自动运行每个构建的测试。从OS X菜单栏中选择Product>测试或按Command + u在Xcode 5中运行单元测试。

答案 1 :(得分:3)

建立目标之间的关系:

  • 在Scheme选择器中,选择“Edit Scheme ...”
  • 选择测试阶段
  • 确保您看到的是“信息”标签,而不是“参数”标签
  • 点击“+”并指定测试目标
  • 您应该看到一系列测试。点击“确定”

然后运行测试,选择产品>测试,或简单地从键盘⌘U。这将:

  • 构建主要目标
  • 构建测试目标
  • 根据类型执行主目标,运行测试

答案 2 :(得分:3)

以下是我必须做的让XCode 4在构建时自动运行单元测试。

  1. 为主要目标启用“构建后测试”。 (见Mark Szymczyk的回答)
  2. 使您的测试目标在主目标的构建方案的构建阶段运行。
    • 点击产品>管理方案菜单项
    • 双击目标计划(我的列表中只有一个)
    • 展开左侧的构建手风琴
    • 点击手风琴中的构建选项
    • 您应该在右侧看到测试项目,确保单击“运行”复选框

答案 3 :(得分:1)

我以为我会给出对我有用的步骤的高级解释。 (OS X 10.7.4,Xcode 4.3.3)如果你不熟悉构建阶段和方案之类的东西,这里有来自Apple的优秀资源:http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Building/Building.html

对于新项目,请确保在输入新项目名称的页面上选中“包含单元测试”复选框。单击Project Navigator中的项目图标以查看自动创建的两个目标。它们将被称为“MyCocoaApp”和“MyCocoaAppTests”。选择MyCocoaAppTests目标(不是MyCocoaApp目标!),然后从视图顶部的选项中选择“Build Settings”。在视图顶部附近的搜索栏中输入“构建后测试”。您应该看到“Test After Build”的单个设置,默认设置为NO。单击NO设置并将其更改为YES。更进一步。为该项目制定计划。 (产品菜单 - >编辑方案...)在左侧的列中选择“构建”。您应该看到右侧的两个目标和一些复选框。在“MyCocoaAppTests”行上,选中“运行”复选框并单击“确定”。你完成了。键入Command-B。您的应用程序将构建,单元测试将构建,单元测试将运行并在默认情况下出现错误时失败。

如果必须将单元测试添加到现有项目中,则需要更多参与。首先,请按照Apple的这些说明进行操作:https://developer.apple.com/library/mac/#documentation/developertools/Conceptual/UnitTesting/02-Setting_Up_Unit_Tests_in_a_Project/setting_up.html#//apple_ref/doc/uid/TP40002143-CH3-SW1

如果您没有错过任何步骤,您现在应该设置选择时运行的单元测试(产品菜单 - >测试)。现在,执行上述两个步骤:1)为MyCocoaAppTest目标设置“Test After Build”设置为YES; 2)在应用程序的Scheme的Build部分中选中MyCocoaAppTest目标的“Run”复选框。最后一步:您必须向MyCocoaAppTest目标添加一个新的“运行脚本”构建阶段(而不是MyCocoaApp构建阶段!)。选择测试目标,单击“Build Phases”,单击右下角的“Add Build Phase”图标,选择“Add Run Script”。 “运行脚本”部分将在其他构建阶段下方打开。脚本字段中包含以下文本:“键入脚本或从工作区拖动脚本文件”。在该字段中,输入:“$ {SYSTEM_DEVELOPER_DIR} / Tools / RunUnitTests”。 (包括引号。)

就是这样。命中-B。你的应用应该建立。您的测试应该构建然后运行。祝好运。呼。

相关问题