Reputation: 6971
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.
Upvotes: 14
Views: 8050
Reputation: 11764
As explained in your self-answer, it is useful to create a configuration dedicated to unit testing
In Objective-C you'll need to play with NS_BLOCK_ASSERTIONS
and the more recent ENABLE_NS_ASSERTIONS
indeed.
For Swift assertions, I found out from Apple Developer it depends on the compiler optimization level you chosed.
With -Onone
the assertions will be triggered, but not with -O
Upvotes: 1
Reputation: 6971
Solved, I added a new configuration, duplicated from Debug, called Test
.
Then added NS_BLOCK_ASSERTIONS=1
in the build settings preprocessor macros.
Finally, change the test action in the test's scheme.
Now it works :)
Upvotes: 18