我想测试我的API契约,例如,如果创建一个对象时使用nil
的某个参数,则会引发Assert,但如果Assert被禁用(Release config),则只返回nil。
我的测试方案的构建配置为Debug,所以在我的API契约测试中,我检查创建一个对象时,如果一些参数为nil,是否会返回一个nil对象,但是构造函数的Assert是在XCTAssertNil
执行之前发出的,所以我的测试总是失败。
我可以在测试时禁用Assert吗?我尝试在启动时传递的scheme参数中添加NS_BLOCK_ASSERTIONS
,但没有成功。
2条答案
按热度按时间pgky5nke1#
解决后,我添加了一个从Debug复制的新配置,名为
Test
。然后在构建设置预处理器宏中添加
NS_BLOCK_ASSERTIONS=1
。最后,更改测试方案中的测试动作。
现在起作用了:)
fdbelqdn2#
如your self-answer中所述,创建专用于单元测试的配置非常有用
在Objective-C中,你需要使用
NS_BLOCK_ASSERTIONS
和更新的ENABLE_NS_ASSERTIONS
。对于SwiftAssert,我从Apple Developer中发现它取决于您选择的编译器优化级别。
使用
-Onone
时,将触发Assert,但使用-O
时不会