【问题标题】:How do I automatically perform unit tests on each build?如何在每个构建上自动执行单元测试?
【发布时间】:2011-07-13 02:08:47
【问题描述】:

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

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

【问题讨论】:

  • 不是构建,而是进行单元测试,它负责编译目标和测试目标。

标签: xcode unit-testing xcode4 dependencies


【解决方案1】:

将“构建后测试”构建设置设置为“是”。选择 Product > Build For > Build For Testing 来构建项目并运行测试。

Xcode 5 更新

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

【讨论】:

  • 从项目导航器中选择项目以打开项目编辑器。在项目编辑器的左侧选择项目或目标。单击编辑器顶部的构建设置按钮。构建后测试构建设置位于单元测试集合中。
  • 项目构建后仍然没有测试。
  • 你确定吗?如果测试通过,Xcode 不会向您显示测试结果。您必须打开日志导航器(选择视图 > 导航器 > 日志)才能查看测试结果。打开日志导航器并从列表中选择构建以查看构建结果,这应该表明测试已运行。
  • 是的,当然。我故意编辑了 UT 以确保它失败,但它没有失败。
  • 您将哪些目标设置为“构建后测试”设置为“是”?我检查了我的项目,并且应用程序目标和单元测试目标中的构建设置都设置为是。
【解决方案2】:

建立目标之间的关系:

  • 在方案选择器中,选择“编辑方案...”
  • 选择测试阶段
  • 确保您看到的是“信息”选项卡,而不是“参数”选项卡
  • 点击“+”并指定您的测试目标
  • 您应该会看到一个测试列表。点击“确定”

然后要运行测试,请选择产品 > 测试,或者直接从键盘选择 ⌘U。这将:

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

【讨论】:

    【解决方案3】:

    为了让 XCode 4 在构建时自动运行单元测试,我必须这样做。

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

    【讨论】:

    • 这一步是让它为我工作的缺失部分。此外,我的单元测试在一个单独的项目中,我必须确保我的静态库项目和单元测试项目都启用了“构建后测试”。
    • @Brian,我认为需要在测试目标上设置“构建后测试”设置,而不是主要目标。 (设置的快速帮助消息提到它由 RunUnitTests 脚本读取,否则会被忽略。)另外,我认为上述步骤可以简化为:选择 Product > Edit Schemes... 和从顶部的弹出窗口中选择方案。然后只需单击 Build 操作选项卡(无需展开它)。最后一步就好了。 This answer,虽然没有那么详细,但解释得很好。
    【解决方案4】:

    我想我应该对适合我的步骤进行高级解释。 (OS X 10.7.4,Xcode 4.3.3)如果您不熟悉 Build Phases 和 Schemes 之类的东西,这里是 Apple 提供的一个很好的资源:@​​987654321@

    对于新项目,请确保在输入新项目名称的页面上选中“包含单元测试”复选框。单击 Project Navigator 中的项目图标以查看已自动创建的两个目标。它们将被称为“MyCocoaApp”和“MyCocoaAppTests”。选择 MyCocoaAppTests 目标(不是 MyCocoaApp 目标!)并从视图顶部的选项中选择“构建设置”。在视图顶部附近的搜索栏中输入“构建后测试”。您应该会看到“构建后测试”的单个设置,默认情况下它设置为 NO。单击 NO 设置并将其更改为 YES。再一步。提出项目方案。 (产品菜单 -> 编辑方案...)在左侧栏中选择“构建”。您应该在右侧看到您的两个目标和一些复选框。在“MyCocoaAppTests”行上,选中“运行”复选框并点击“确定”。你完成了。键入命令-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) 在应用程序的方案的构建部分中选中 MyCocoaAppTest 目标的“运行”复选框。最后一步:您必须将新的“运行脚本”构建阶段添加到 MyCocoaAppTest 目标(不是 MyCocoaApp 目标!)。选择测试目标,点击“Build Phases”,点击右下角的“Add Build Phase”图标,选择“Add Run Script”。 “运行脚本”部分将在其他构建阶段下方打开。脚本字段中包含以下文本:“键入脚本或从工作区拖动脚本文件”。在该字段中,输入:“${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests”。 (包括引号。)

    就是这样。按命令-B。您的应用程序应该构建。您的测试应该构建然后运行。祝你好运。唷。

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 2011-03-29
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      相关资源
      最近更新 更多