Search code examples
iosobjective-cxcodeunit-testing

Disable assertions while testing


I want to test the contract of my API so if, for example, an object is created with some parameter to nil an assertion is raised, but if the assertions are disabled (Release config) it simply returns nil.

My test scheme has the build configuration to Debug, so in my API contract tests I check if the creation of an object with some parameters to nil returns a nil object. But the assertion of the constructor is raised before the XCTAssertNil is executed, so my test always fails.

Can I disable the assertions while testing? I tried to add NS_BLOCK_ASSERTIONS to the scheme arguments passed on launch but that doesn't work.


Solution

  • Solved, I added a new configuration, duplicated from Debug, called Test.

    enter image description here

    Then added NS_BLOCK_ASSERTIONS=1 in the build settings preprocessor macros.

    enter image description here

    Finally, change the test action in the test's scheme.

    enter image description here

    Now it works :)