我正在尝试将 OCMock 添加到我的 iOS 4 项目中。为了测试它,我有一堂课Person
用一种方法,-hello
。当我运行这个测试时:
- (void) testMock {
id mock = [OCMockObject mockForClass:[Person class]];
[[mock expect] hello];
[mock hello];
[mock verify];
}
一切都很好,构建成功。如果我拿走hello
调用,像这样:
- (void) testMock {
id mock = [OCMockObject mockForClass:[Person class]];
[[mock expect] hello];
[mock verify];
}
我希望收到一条错误消息,告诉我模拟中没有调用我期望的方法。相反,我收到了一条关于测试设备崩溃的神秘消息:
/Developer/Tools/RunPlatformUnitTests.include:451:0 Test rig '/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/Developer/usr/bin/otest' exited abnormally with code 134 (it may have crashed).
Is this crash当未调用预期方法时正常吗?难道是我配置不好?
你没有配置不好,这是Apple在发布iOS4时在模拟器SDK中引入的一个错误。基本上,如果使用 NSInitation 对象调用的代码抛出异常,则该异常是不可捕获的。当这个问题第一次出现在这里时,我写了关于这个问题的文章:
http://pivotallabs.com/users/adam/blog/articles/1302-objective-c-exceptions- thrown-inside-methods-invoked-via-nsinitation-are-uncatchable
不幸的是,这个错误影响了 OCMock,而 Apple 并没有表现出修复它的太大兴趣。许多人提交了错误报告,但无济于事。
我意识到这不太舒服,但是在使用时你会得到稍微好一点的错误消息Cedar用于测试(我相信对于GTM).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)