Objective c 用于断言崩溃的Xcode测试框架宏
我试图找到一个XCT宏,它可以断言方法崩溃,而不是异常。例如,在NSDictionary上设置nil键会引发异常,因此您可以使用Objective c 用于断言崩溃的Xcode测试框架宏,objective-c,cocoa,xcode5,Objective C,Cocoa,Xcode5,我试图找到一个XCT宏,它可以断言方法崩溃,而不是异常。例如,在NSDictionary上设置nil键会引发异常,因此您可以使用 XCTAssertThrows([[NSMutableDictionary dictionary] setObject:@"foo" forKey:nil], @"Setting a nil key on an NSMutableDictionary should throw an exception.") 然而,在NSUserDefaults上设置nil键似乎不会
XCTAssertThrows([[NSMutableDictionary dictionary] setObject:@"foo" forKey:nil], @"Setting a nil key on an NSMutableDictionary should throw an exception.")
然而,在NSUserDefaults上设置nil键似乎不会引发异常,它只是用一行代码使代码崩溃
线程1:EXC_断点(代码=EXC_I386_BPT,子代码=0x0)
这看起来像一个异常断点,但不是抛出?无论如何,下面的断言将终止测试套件,如上所述
XCTAssertThrows([[NSUserDefaults standardUserDefaults] setObject:@"foo" forKey:nil], @"Setting a nil key on NSUserDefaults should crash.");
看起来像。也许您可以注册一个信号处理程序?您不应该花时间为Cocoa类编写测试,而是您自己的类。您的实际测试用例是什么?我不是直接测试cocoa框架,那确实是在浪费我的时间。我简化了这篇文章的例子。实际上,我有一个方法,可以将参数发送到NSMutableDictionary或NSUserDefault对象,这就是行为差异有问题的原因。我当前的解决方案是检查参数输入,并在发送到任一实例之前抛出我自己的异常。