xcode 测试时禁用Assert

ddarikpa  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(238)

我想测试我的API契约,例如,如果创建一个对象时使用nil的某个参数,则会引发Assert,但如果Assert被禁用(Release config),则只返回nil。
我的测试方案的构建配置为Debug,所以在我的API契约测试中,我检查创建一个对象时,如果一些参数为nil,是否会返回一个nil对象,但是构造函数的Assert是在XCTAssertNil执行之前发出的,所以我的测试总是失败。
我可以在测试时禁用Assert吗?我尝试在启动时传递的scheme参数中添加NS_BLOCK_ASSERTIONS,但没有成功。

pgky5nke

pgky5nke1#

解决后,我添加了一个从Debug复制的新配置,名为Test

然后在构建设置预处理器宏中添加NS_BLOCK_ASSERTIONS=1

最后,更改测试方案中的测试动作。

现在起作用了:)

fdbelqdn

fdbelqdn2#

your self-answer中所述,创建专用于单元测试的配置非常有用
在Objective-C中,你需要使用NS_BLOCK_ASSERTIONS和更新的ENABLE_NS_ASSERTIONS
对于SwiftAssert,我从Apple Developer中发现它取决于您选择的编译器优化级别。
使用-Onone时,将触发Assert,但使用-O时不会

相关问题