在测试时禁用断言

eme*_*gro 5 xcode unit-testing objective-c ios

我想测试我的API的合同,所以,例如,如果创建了一个带有一些参数的对象,nil则会引发断言,但如果断言被禁用(Release config),它只返回nil.

我的测试方案有Debug的构建配置,所以在我的API契约测试中,我检查是否创建了一个带有nil参数的对象返回一个nil对象.但是在XCTAssertNil执行之前会引发构造函数的断言,因此我的测试总是失败.

我可以在测试时禁用断言吗?我试图添加NS_BLOCK_ASSERTIONS在启动时传递的方案参数,但这不起作用.

eme*_*gro 9

解决了,我添加了一个新的配置,从Debug复制,调用Test.

在此输入图像描述

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

在此输入图像描述

最后,更改测试方案中的测试操作.

在此输入图像描述

现在它工作:)