Xcode 5表示测试失败,但显示绿色复选标记

时间:2013-10-07 20:01:51

标签: ios unit-testing xcode5 xctest

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

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

这里出了什么问题?

9 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

Build Clean为我工作......有时无论如何。产品 - >干净。

答案 3 :(得分:1)

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

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

但是在没有运行测试用例的情况下突然退出:

Program ended with exit code: 0

并显示测试失败的通知。

重新启动Xcode只会暂时有效,因为问题很快就会出现。

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

答案 4 :(得分:1)

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

我做错了几件具体的事情:

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

答案 5 :(得分:0)

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

我注意到,如果我在运行测试时遇到任何断点,只需继续报告即可通过,非常奇怪且无法接受运行整个套件......

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

答案 6 :(得分:0)

这似乎已在XCode 5.1.1

中修复

答案 7 :(得分:0)

此错误已在Xcode 5.1中更正:

Xcode 5.1 release notes

备注特别提及:

  

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

     

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

答案 8 :(得分:0)

尽管我使用的测试是逻辑测试,但Xcode希望iPhone模拟器能够运行。在尝试让测试再次运行的痛苦之后,我已经从它的菜单中重置了iPhone模拟器内容和设置,这有帮助。