【问题标题】:OCUnit: How to run tests without launching iPhone simulator?OCUnit:如何在不启动 iPhone 模拟器的情况下运行测试?
【发布时间】:2011-05-29 00:32:27
【问题描述】:

我正在关注iOS Development Guide: Unit Testing Applications。但是,当我尝试构建 (Command+B) LogicTests 目标(“设置逻辑测试”的第 8 步)时,我收到错误消息:“选定的运行目标对此操作无效。”

由于我将应用程序目标添加到 LogicTests 的目标依赖项中,我可以使用 Command+U 运行单元测试,但这也会启动 iPhone 模拟器。

为了节省时间和资源,是否可以在不启动 iPhone 模拟器的情况下运行 OCUnit 测试(逻辑和应用程序测试)?

【问题讨论】:

    标签: unit-testing xcode4 ocunit


    【解决方案1】:

    我了解模拟器在单元测试中弹出的烦恼。我能找到的最好的补救方法是在启动单元测试时执行 Command + U,然后是 Command + H。 (Control + H 会在模拟器出现后将其隐藏。)由于它几乎是瞬间出现的,因此这是一种将其移出视线范围的有效方法。

    【讨论】:

    • 使用全屏时真的很烦人,因为它会跳转到桌面。 :(
    • @ChrisWagner +NSUIntegerMax!
    【解决方案2】:

    我已经成功地运行了单元测试来测试我的模型类,而没有启动模拟器,如下所示:

    1. 我没有设置任何包加载器或测试主机构建设置,而是将我正在单元测试的 .m 文件添加到构建阶段编译源中。

    2. 然后我使用以下命令从命令行运行单元测试:

      xcodebuild -verbose -target TheElementsUnitTests -configuration Debug -sdk iphonesimulator5.0 clean build
      

    不太确定为什么这没有启动模拟器,但绝对没有!

    【讨论】:

    • 这是我在与 Jenkins 进行持续集成时使用的。似乎是运行测试并验证它们都通过的好方法。不过,我还没有找到一种方法可以在不启动模拟器的情况下从 XCode UI 中执行相同的操作。
    【解决方案3】:

    这是我在测试行为配置中设置为生成输出运行的一个小AppleScript:

    #!/usr/bin/osascript
    activate application "Xcode"
    

    它在按下 command + U 后立即返回 Xcode。

    附:我还打开了一个错误,Apple 将其标记为重复。所以,他们知道。

    【讨论】:

      【解决方案4】:

      需要多少时间/资源?我不会专注于减少这些,而是​​专注于扩展您的测试,使其远远超出 Apple 最初的“逻辑测试”指南。这些指南是有限制的,并且是在 Xcode 4 之前编写的。现在您可以编写测试而不用思考“这是逻辑测试还是应用程序测试?” -- 测试一切。

      【讨论】:

      • 您说,“现在您可以编写测试而不用思考‘这是逻辑测试还是应用程序测试?’”如何以及为什么?即,为什么我不想将acceptance testsunit tests 分开?
      • Apple 所说的“应用程序测试”与验收测试不同。我的单元测试将我的视图控制器验证为独立的单元。例如:填充模型(可能是假的)。使用模型实例化视图控制器并调用 -load 以模拟正在加载的视图。验证视图是否反映模型。这是一个单元测试,而不是验收测试。 …您引用的 Apple 文档已过时,不适用于 Xcode 4 测试。
      • 好的,那么,我更新了我的问题:“是否可以在不启动 iPhone 模拟器的情况下运行 OCUnit 测试(逻辑和应用程序测试)?”
      • 同意 Apple 文档在此问题上已过时,但这并不能真正回答原始问题。在 Xcode 4 中运行“测试”会启动模拟器,这让我抓狂。似乎根本没有必要。
      • @bradgonesurfing 是的。所以我通过在运行测试时设置环境变量来避免这种情况。应用程序委托方法检查该变量并在设置时短路。
      猜你喜欢
      • 2012-05-09
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多