Xcode 5说testing失败,但显示绿色的选中标记
我已经在Xcode 5的新XCTest框架中写了几个unit testing。
testing似乎大部分时间顺利通过,但我遇到了一个奇怪的行为,如果我连续运行testing足够多的时间,最终我会得到一个“testing失败”的消息,控制台将显示Program ended with exit code 0
,但在所有testing旁边都有绿色的复选标记。
这里怎么了?
这绝对是一个错误。 通过https://bugreport.apple.com/提交报告,随时引用我的报告(15251050)。;
在bug修复之前,closures项目并重新打开。
build立清洁为我工作…有时反正。 产品 – >清洁。
如果你看看输出控制台,你应该注意到Xcode开始运行testing套件:
Test Suite 'SomeClassTests' started at 2013-11-30 23:19:34 +0000
但突然退出而不运行testing用例:
Program ended with exit code: 0
并显示testing失败的通知。
重新启动Xcode只会在问题快速恢复时暂时提供帮助。
我停止在Xcode中执行testing,并使用xctool通过命令行运行所有testing。
对于我来说,我认为这个问题与不正确的OCMockconfiguration有关。 完全删除OCMock并完全按照OCMock的build议重新添加到项目中似乎已经修复了它。
一些具体的事情我做错了:
- 我正在使用
#import "OCMock.h
而不是#import "OCMock/OCMock.h
。 Xcode自动完成前者。 - 我以前试图用不同的目录结构来安装OCMock,在库searchpath中存在一个不好的链接。
- 这是愚蠢的,但在试图debugging这个问题,我在我的设置方法中注释了我的OCMockObject的实例化,并不记得取消它的注释。 零的OCMockObject引起了类似的行为,如其他答案中所述。 这是奇怪的..在我目前的项目中,我有两个testing,使用在我的设置实例化的OCMockObject。 两者都应该失败。 然而,其中一个过去了,我能看到的唯一的区别就是先前经过的那个合法地通过了…
无论如何,与OCMock安装正确我的testing工作,因为他们应该
刚刚在我自己更新的XCode 5中遇到这个问题,我以为我会分享我的类似决议。
我注意到,如果我在运行testing时遇到任何断点,只是将其报告为传递,那么对于运行整个套件来说确实是非常奇怪的,而且是不可接受的。
我也注意到,像有人提到的那样join一个usleep,以及在运行testing之前做一个干净的构build似乎解决了这个问题。 然而,创build一个新的testing通常会重新引入这个问题,至less对于这个新的testing来说。 希望苹果很快就能修复这个问题
这似乎已经在XCode 5.1.1中修复
这个错误已经在Xcode 5.1中得到纠正:
Xcode 5.1发行说明
笔记特别提到:
testing目标[testing名称]遇到错误(testing过程用代码-1退出)
尝试通过退出并重新启动模拟器来恢复。 (15929053)
尽pipe我正在使用的testing是逻辑testing,Xcode希望iPhone模拟器正在运行。 一旦在试图让testing再次工作的痛苦,我已经从它的菜单重置iPhone模拟器的内容和设置,这有助于。