XCTAssertThrows具体例子

Posted

技术标签:

【中文标题】XCTAssertThrows具体例子【英文标题】:XCTAssertThrowsSpecific example 【发布时间】:2015-05-07 13:00:47 【问题描述】:

我有一个带有以下代码的 XCTest 案例:

- (void)testNilInDict

    NSMutableDictionary *r = (NSMutableDictionary*) @@"1": @1, @"2": @2;
    XCTAssertThrowsSpecific([r setObject:nil forKey:@"3"], NSInvalidArgumentException);

这不会构建。然后,我想在网上寻找正确的语法或示例,但我发现的只是一个网站列表,这些网站仅重复文档已经说明的内容。

XCTAssertThrowsSpecific (expression, specificException, format...)

例如找到here、here、here 和here。

我的问题是:

    这个特定函数的语法的正确示例是什么? 什么是开始寻找这些类型的好网站 示例,无需找到太多硬核代码。

【问题讨论】:

您遇到的构建错误是什么? 未知类型名称“NSInvalidArgumentException”。我发现如果我将其更改为 NSException,它会起作用。不知何故,Xcode 和编译器无法识别 NSInvalidArgumentException,即使这是示例中引发的错误。 【参考方案1】:

NSInvalidArgumentException 是异常的名称(即-[NSException name]),而不是类。

这是XCTAssertThrowsSpecific的正确用法示例:

XCTAssertThrowsSpecific([obj methodThatThrowsException], NSException, @"Optional assertion failure description");

如果您想知道何时抛出具有特定名称(例如NSInvalidArgumentException)的异常,请使用XCTAssertThrowsSpecificNamed

XCTAssertThrowsSpecificNamed([obj methodThatThrowsException], NSException, NSInvalidArgumentException);

【讨论】:

以上是关于XCTAssertThrows具体例子的主要内容,如果未能解决你的问题,请参考以下文章

XCTAssertThrows 可以捕获 c++ 异常吗?

XCTAssertThrows 在断点处停止

assert.strictEqual()

assertion的用法

ruby yield 关键字用法实例

Python assert statement