OCUnit测试失败,但Xcode Log Navigator说没有问题

时间:2011-12-09 16:32:39

标签: xcode unit-testing ocunit

我在Xcode及其“Log Navigator”中遇到了一个非常偷偷摸摸的问题。

我重新创造了这样的问题;我有一个非常简单的OCUnit测试:

-(void)testSimpleFailure{

    STFail(@"Please fail!");
}

我清理我的构建,构建我的测试方案,并运行我的测试。

在输出控制台窗口中,我看到我的所有测试执行,包括上面的测试。控制台显示实际运行并且失败的测试:

##teamcity[testFailed name='-|[SimpleTestClassTests.testSimpleFailure|]' message='Please fail!' details='']

然而,Xcode显示“Tests Succeeded overlay”,左侧的“Log Navigator”显示没有问题,全部都是绿色。

还有其他人有过类似的问题吗?有谁知道如何解决这个问题?

我非常希望在我承诺之前不会得到误报。

编辑澄清我的问题。

6 个答案:

答案 0 :(得分:11)

我在设备上运行应用程序测试和单元测试。我得到了与你相同的结果 - 测试失败但Log Navigator说一切都过去了。不仅如此,我还无法在代码中设置断点。

我的解决方案是“编辑方案...”,选择“测试”方案,并将我的调试器从“LLDB”更改为“GDB”。我正在使用Xcode 4.3.2,我的编译器设置为LLVM 3.1的所有目标

将Test方案的调试器更改为GDB后,Log Navigator会报告测试失败,并且我可以在测试运行时设置断点和调试。

link:搜索“执行任何代码前单元测试崩溃”(LLDB错误)https://github.com/kstenerud/iOS-Universal-Framework

答案 1 :(得分:7)

好的,经过5天左右的大约3位开发人员在查看此问题后,我们找到了解决方案:

rm -rf Library/Application\ Support/iPhone\ Simulator

或者,或者,如果吹走整个目录树不是你的事情:

转到iOS模拟器应用程序。从顶部菜单中选择iOS模拟器,然后选择"重置内容和设置......"

显然在模拟器和Xcode之间有些东西被破坏了,所以Xcode无法挂钩到模拟器来观看测试。 Xcode认为没有测试,因此测试通过。

究竟是什么导致了这一点,我们不确定,但经过5个艰苦的日子和1个解决方案后,我们不在乎,因为我们正在前往最近的酒吧。

干杯。

答案 2 :(得分:2)

我刚读了这篇关于影响Mac应用程序的问题的长篇文章:

http://masonmark.com/the-xcode-fairy/

诀窍似乎是退出Xcode并再次打开项目。该错误是间歇性的,有时会在这里,或者永远不会在这里,它会一直处于这种状态,直到下次重新启动Xcode。

这也是一个很好的阅读。

答案 3 :(得分:0)

是的,我已经看到了这种情况,间歇性和烦人。

确保选中了最新(最新)的日志消息。

答案 4 :(得分:0)

对我有用:重置模拟器,就像Nick L in his answer PLUS关闭XCode并重新启动一样。然后每个使用STAssertTrue(false)或STFail的构建都会给我一个负面结果。

答案 5 :(得分:0)

如果您使用的是XCTest,请确保部署到iOS 7模拟器。如果部署到iOS 6,它会说构建成功,测试失败但不在调试器中提供任何日志记录信息。