如何在 XCTestCase 中禁用“所有异常”
Posted
技术标签:
【中文标题】如何在 XCTestCase 中禁用“所有异常”【英文标题】:How can I disable "All exceptions" in XCTestCase 【发布时间】:2014-08-01 17:58:58 【问题描述】:我通常在我的 Xcode 项目中打开“所有异常”。
这是 XCTestCase 中的一个单元测试
- (void)testInitNotAllowed
XCTAssertThrowsSpecificNamed([[PON_GameStatistics alloc] init], NSException, @"Singleton");
XCTAssertNoThrowSpecificNamed([[PON_GameStatistics alloc] init], NSException, @"Singleton1");
第一行是测试是否抛出异常,我希望它会被抛出。 所以每次我运行这个单元测试时,每次我运行每个项目或每个文件的所有单元测试是什么意思。单元测试停止,因为我打开了“所有异常”。
所以我最终要做的是跟随。 运行单元测试时将“所有异常”设置为关闭,当我在模拟器上编码或进行手动测试时将其设置为打开。
问题 有没有办法让“所有异常”打开但以某种方式告诉Xcode不要在这个测试用例中停止“所有异常”?
这会节省我很多时间。
【问题讨论】:
我也有同样的问题。我养成了在运行单元测试时关闭它的习惯。 对我来说,一个理想的解决方案是让断点异常仍然适用于 unexpected 异常。但这可能要求太多了...... 【参考方案1】:也许你可以用条件断点做到这一点。
-
在 sn-p 的开头添加一个新断点。
自省并为 Action 选择 Debugger Command。
输入调试器命令:
断点禁用
检查自动继续 ...
这将自动关闭断点。当然你可以在sn-p之后开启它们。
【讨论】:
如果我没记错的话,测试是按字母顺序运行的。您能否添加一个以一堆 a 开头的新测试类,您可以在其中关闭断点,然后在最后一个测试中重新打开它们? @Amin 这是一些解决方法,是否可以使用一些#pragma mark
来做到这一点?在代码中执行它并查看它更容易。我会在一天左右的时间内接受答案。
@CrimsonChris 我认为,这种行为既没有保证也没有记录。如果可以关闭方法内部的断点,为什么要这样做? (可以在任何地方设置断点。)
@WebOrCode 我不这么认为,因为#pragma 解决了编译时问题,而调试解决了运行时问题。
@Amin 如果一个项目继承了一个包含数十个引发异常的现有单元测试的项目,那么他会想要一种不需要单独应用于每个测试的解决方案。以上是关于如何在 XCTestCase 中禁用“所有异常”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XCTestCase 中测试 NSPersistentDocument?