gpt4 book ai didi

ios - 不要停止 XCTAssertThrowsSpecific 上的测试执行

转载 作者:行者123 更新时间:2023-12-01 16:40:06 25 4
gpt4 key购买 nike

使用 XCTest,测试执行以下操作:

XCTAssertThrowsSpecificNamed([does something that breaks], NSException, NSInvalidArgumentException);

我不希望调试器在我知道会发生的 NSException 上停止,但我希望它仍然在可能发生的其他异常上停止。

最佳答案

基本上我们别无选择。我仍然认为它是一个 xCode 错误,因为您已经告诉 xCode 将引发异常,以及它将是什么异常。如果这是您不“期望”的异常,为什么要提供 XCTAssertThrows?
显然这是针对您期望的异常,@nhgrif 认为这应该是错误,而不是异常。可能是一个好点,但如果这种情况发生,我确实希望我的程序崩溃,因为我无法处理它。

所以真正的问题是为什么不只在那个异常上禁用调试器呢?可能是因为他们还没有搞定。我建议向 Apple 提出错误/功能请求。我希望有人在这方面与我相矛盾(请发表评论!),但在那之前,我会忍受这个问题(在运行我的所有测试时禁用调试器)。

--> https://stackoverflow.com/a/22393643/1701430

“为什么抛出执行时测试会停止?”
因为你有一个断点,它会停止执行。

“为什么,在删除断点后,抛出异常时我的应用程序会崩溃?”
因为你有一个未处理的异常。未处理的异常会导致您的程序崩溃。

“我怎样才能处理异常,以免我的程序崩溃?”
这个问题的简单答案是简单地不抛出异常。在其他编程语言中,例如 Java,这是完全标准的。但是在 Objective-C 中,我们并没有真正做异常。在 Objective-C 中,应该为真正的异常行为保存异常。

话虽如此,强烈建议您找到另一种方法来处理您要处理的任何事情,这就是您在 Objective-C 中处理异常的方式:

@try {
// code that could throw an exception
}

@catch (NSException *e) {
// handle the exception...
}

@finally {
// post try-catch code, executed every time
}

关于ios - 不要停止 XCTAssertThrowsSpecific 上的测试执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com