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

Nic*_*k L 6 xcode unit-testing ocunit

我在Xcode和它的"日志导航器"中有一个非常偷偷摸摸的问题.

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

-(void)testSimpleFailure{

    STFail(@"Please fail!");
}
Run Code Online (Sandbox Code Playgroud)

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

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

##teamcity[testFailed name='-|[SimpleTestClassTests.testSimpleFailure|]' message='Please fail!' details='']
Run Code Online (Sandbox Code Playgroud)

但是,Xcode显示"Tests Succeeded overlay",左侧的"Log Navigator"表示没有问题,全部都是绿色.

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

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

编辑澄清我的问题.

Sha*_*ron 11

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

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

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

链接:搜索"执行任何代码之前的单元测试崩溃"(LLDB错误)https://github.com/kstenerud/iOS-Universal-Framework

  • 如果我能给你更多的赞成,我愿意.我花了一整天的时间来反对这一点.它适用于我的简单测试用例.我希望它能在明天的实际项目中发挥作用. (2认同)

Nic*_*k L 7

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

rm -rf Library/Application\ Support/iPhone\ Simulator
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

干杯.

  • 在设备上进行单元测试时,您是否看到过此行为?我的"解决方案"是在我刚刚编写的测试顶部设置一个断点并逐步完成.你提交雷达了吗?我想欺骗它. (3认同)