Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 用于断言崩溃的Xcode测试框架宏_Objective C_Cocoa_Xcode5 - Fatal编程技术网

Objective c 用于断言崩溃的Xcode测试框架宏

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键似乎不会

我试图找到一个XCT宏,它可以断言方法崩溃,而不是异常。例如,在NSDictionary上设置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对象,这就是行为差异有问题的原因。我当前的解决方案是检查参数输入,并在发送到任一实例之前抛出我自己的异常。