【问题标题】:Xcode 5 says tests failed but shows green checkmarksXcode 5 说测试失败但显示绿色复选标记
【发布时间】:2013-10-14 13:05:00
【问题描述】:

我已经在 Xcode 5 的新 XCTest 框架中编写了一些单元测试。

测试似乎大部分时间都成功通过,但我遇到了一个奇怪的行为,如果我连续运行测试足够多次,最终我会收到“测试失败”消息,控制台将显示 @ 987654321@,但是所有测试旁边都有绿色的复选标记。

这里出了什么问题?

【问题讨论】:

  • 不得不说同样的事情正在发生在我身上。我在一个项目中有一套 72 个测试,而在第二个项目中只有一个测试。有时通知说它失败了,尽管测试显然通过了,有时它会给你成功。给我一个成功通知的模式是连续两次或三次运行完全相同的测试(我再次假设您的测试通过了)。最终通知成功。
  • 同样的事情,不知道为什么。
  • 此处类似。对我们来说,它有时会在第一次运行时发生,然后再成功。我们还认为我们通过在代码中添加重要的usleep 来修复它,但这当然是不可接受的。 (也很难验证它是否真的有效。)

标签: ios unit-testing xcode5 xctest


【解决方案1】:

这绝对是一个错误。通过https://bugreport.apple.com/ 提交报告,请随时参考我的报告 (15251050)。

【讨论】:

  • 15251050 是问题 ID 吗?我找不到它。
  • 我也找不到。
  • 这是苹果给我的参考编号。
  • 您的日志是否显示您的 RAM 有大量已连接但不活动的内存?我有将近 10GB 的 16GB。
  • 同样的事情,但找不到提到的报告。有什么想法吗?
【解决方案2】:

在修复错误之前,关闭项目并重新打开它。

【讨论】:

    【解决方案3】:

    Build Clean 对我有用...有时无论如何。产品 -> 清洁。

    【讨论】:

      【解决方案4】:

      如果您查看输出控制台,您应该注意到 Xcode 开始运行测试套件:

      Test Suite 'SomeClassTests' started at 2013-11-30 23:19:34 +0000
      

      但没有运行测试用例就突然退出:

      Program ended with exit code: 0
      

      并显示测试失败的通知。

      重启 Xcode 只是暂时的,因为问题很快就会出现。

      我停止在 Xcode 中执行测试,并使用 xctool 通过命令行运行所有测试。

      【讨论】:

        【解决方案5】:

        对我来说,我认为这个问题与不正确的 OCMock 配置有关。 (完全)删除 OCMock 并将其重新添加到项目中 exactly recommended by OCMock 似乎已经修复了它。

        我做错了几件事:

        1. 我使用的是#import "OCMock.h 而不是#import "OCMock/OCMock.h。 Xcode 自动完成前者。
        2. 我之前尝试使用不同的目录结构安装 OCMock,在库搜索路径中留下了一个错误链接。
        3. 这很愚蠢,但在尝试调试此问题时,我在我的设置方法中注释掉了我的 OCMockObject 的实例化.. 并且不记得取消注释它。 nil OCMockObject 导致了与此处其他答案中描述的类似行为。这很奇怪。在我当前的项目中,我有两个测试使用在我的设置中实例化的 OCMockObject。两者都应该失败。但是,其中一个通过了,我可以看到两者之间的唯一区别是之前通过的那个是合法的...

        无论如何,如果 OCMock 设置正确,我的测试就可以正常工作

        【讨论】:

        • 很高兴知道其他人,但没有 OCMock 时我也遇到了这个问题。
        【解决方案6】:

        刚刚在我自己更新的 XCode 5 中遇到了这个问题,我想我会分享我类似的解决方案。

        我注意到如果我在运行测试时遇到任何断点并继续它报告为通过,这确实非常奇怪并且对于运行整个套件来说是不可接受的......

        我还注意到,正如有人提到的那样,添加一个 usleep 以及在运行测试之前进行干净的构建似乎可以解决问题。但是,创建新测试通常会重新引入问题,至少对于该新测试而言。希望苹果尽快解决这个问题!

        【讨论】:

          【解决方案7】:

          这似乎已在 XCode 5.1.1 中修复

          【讨论】:

          • 他们是这么说的,但我可以发誓我最近又看到了。不过肯定不会像以前那么频繁了。
          • 他们声称它已经存在,但不幸的是,错误仍然存​​在。
          • @Shinigami 最初它可以正常工作,但最终同样的事情发生在我身上。知道他们究竟做了什么会导致这种情况发生的频率降低会很有趣。
          【解决方案8】:

          此错误已在 Xcode 5.1 中得到纠正:

          Xcode 5.1 release notes

          注释特别提到:

          测试目标 [测试名称] 遇到错误(测试进程以代码 -1 退出)

          通过退出并重新启动模拟器来尝试恢复。 (15929053)

          【讨论】:

          • 它被报告为已修复,但在我更新后仍然存在。
          • 更新后对我来说一切正常。尝试清理项目并重新启动计算机。
          • 上周我已经这样做了很多次了——到目前为止还没有。
          • 很抱歉听到迈克的消息。它一定是您的测试设置中发生的其他事情。这个解决方案对我有用,这也是我觉得有必要做出贡献的原因。
          【解决方案9】:

          尽管我使用的测试是逻辑测试,但 Xcode 想要 iPhone 模拟器运行。在试图让测试再次工作的痛苦中,我从它的菜单中重置了 iPhone 模拟器的内容和设置,这很有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-07-17
            • 2023-03-26
            • 2022-08-06
            • 1970-01-01
            • 2019-10-29
            • 2015-08-27
            相关资源
            最近更新 更多