【发布时间】:2011-11-12 21:30:00
【问题描述】:
我知道如何解决 EXC_BAD_ACCESS 问题,但我不确定如何对其进行单元测试。有没有办法在代码中捕获 EXC_BAD_ACCESS 而不是简单地崩溃?
这就是我问的原因:我编写了一个大量使用块的库,如下所示:
- (void)doSomething:(void (^)())myBlock;
在我对doSomething: 的实现中,我将最终运行该块,如下所示:
myBlock();
如果调用者为 block 传递 nil,那么它会以EXC_BAD_ACCESS 崩溃,因此解决方案是检查 block 是否存在,如下所示:
if (myBlock) {
myBlock();
}
这个 nil 检查很容易忘记,所以我想要一种方法来编写一个在崩溃发生时失败的单元测试。我想崩溃可以被认为是测试失败,但我认为其他人尝试运行测试以看到一个很好的失败消息而不是崩溃会更好。有什么想法吗?
【问题讨论】:
标签: objective-c unit-testing ocunit