我在 Xcode 5 的新 XCTest 框架中编写了一些单元测试。
测试似乎大部分时间都成功通过,但我遇到了一个奇怪的行为,如果我连续运行测试足够多次,最终我会收到“测试失败”消息,控制台会显示Program ended with exit code 0
,但是有所有测试旁边的绿色复选标记。
这里出了什么问题?
我在 Xcode 5 的新 XCTest 框架中编写了一些单元测试。
测试似乎大部分时间都成功通过,但我遇到了一个奇怪的行为,如果我连续运行测试足够多次,最终我会收到“测试失败”消息,控制台会显示Program ended with exit code 0
,但是有所有测试旁边的绿色复选标记。
这里出了什么问题?
这绝对是一个错误。通过https://bugreport.apple.com/提交报告,请随时参考我的报告 (15251050)。
Build Clean 对我有用......有时无论如何。产品 -> 清洁。
在修复错误之前,关闭项目并重新打开它。
如果您查看输出控制台,您应该注意到 Xcode 开始运行测试套件:
Test Suite 'SomeClassTests' started at 2013-11-30 23:19:34 +0000
但在没有运行测试用例的情况下突然退出:
Program ended with exit code: 0
并显示测试失败的通知。
重新启动 Xcode 只会暂时帮助问题,因为问题很快就会出现。
我停止在 Xcode 中执行测试,并使用xctool通过命令行运行所有测试。
对我来说,我认为这个问题与不正确的 OCMock 配置有关。完全按照OCMock 的建议删除 OCMock 并将其重新添加到项目中似乎已经修复了它。
我做错了几件事:
#import "OCMock.h
而不是#import "OCMock/OCMock.h
. Xcode 自动完成了前者。无论如何,通过正确设置 OCMock,我的测试可以正常工作
此错误已在 Xcode 5.1 中得到纠正:
注释特别提到:
测试目标 [测试名称] 遇到错误(测试进程以代码 -1 退出)
通过退出并重新启动模拟器来尝试恢复。(15929053)
这似乎已在XCode 5.1.1中修复
尽管我使用的测试是逻辑测试,但 Xcode 希望 iPhone 模拟器能够运行。一旦在试图让测试再次工作的痛苦中,我已经从它的菜单中重置了 iPhone 模拟器的内容和设置,这很有帮助。
刚刚在我自己更新的 XCode 5 中遇到了这个问题,我想我会分享我类似的解决方案。
我注意到如果我在运行测试时遇到任何断点并继续它报告为通过,确实非常奇怪并且对于运行整个套件是不可接受的......
我还注意到有人提到添加了一个睡眠,以及在运行测试之前进行干净的构建似乎可以解决这个问题。但是,创建新测试通常会重新引入问题,至少对于该新测试而言。希望苹果尽快解决这个问题!