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.
You must #define NDEBUG (or use the flag -DNDEBUG with g++) this will disable assert as long as it's defined before the inclusion of the assert header file.
To configure assertion options one must use either the -ea or -da command line flags to enable or disable assertions with the command line tool: “java”. For example, “java -ea Assert” where Assert is a java class file.
Using the -O flag (capital O) disables all assert statements in a process.
you can have multiple asserts on the same object. they will usually be the same concept being tested.
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 :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With