Updates

Updated What is CATCH? (markdown)
philsquared
2010-11-09 06:51:42 -08:00
parent c985aec755
commit 59384e5f36

12
Home.md

@ -8,18 +8,18 @@ Good question. In fact the working title for CATCH was YACUTS (Yet Another C++ U
There are a number of decent C++ unit testing frameworks out there, including (but by no means limited to), CppUnit, Aeryn, Cute, Fructose and many more. So what does CATCH bring to the party that differentiates it from these? Apart from a Catchy name, of course.
Here's a list of core features of Catch that together are, to my knowledge, not found anywhere else.
Here's a list of core features of Catch that, collectively, make Catch stand out:
* Implemented entirely in headers. Just #include "catch.hpp" and you're away.
* Write test cases as functions or methods. Functions are self registering.
* No context to pass around. Call through non test code and back into test code and assertions still work.
* No context to pass around. Call through non test code and back into test code and assertions still work (useful for mocks)
* Only one core assertion macro. Comparisons are with standard C/C++ operators - yet the full expression is decomposed and logged.
* Tests are named hierarchically and suites of tests can be implied by at any level of the hierarchy.
* Test cases can also be tagged and non hierarchical suites can be created from tags.
* Test case function names are generated - you only need to provide a test name (and description)
* Tests are named hierarchically and can be run by matching the entire name or partially to provide one way of grouping tests.
* Test cases can also be tagged and non hierarchical suites can be created from tags (coming soon).
* Test case function names are generated within the macro - you only need to provide a test name (and description)
* Floating point tolerance comparisons are built in using an expressive Approx() syntax.
* Test cases can be described from a TDD or BDD mindset, with support for nested SECTIONs in the latter.
* Output is through reporter objects. basic textual and XML reporters are included. Custom reporters can be easily added.
* Output is through reporter objects. basic textual and XML reporters are included. Custom reporters can easily be added.
* Output can be to any stream.
* A default main() function is provided (in a header), but you can supply your own for complete control (e.g. integration into your own test runner GUI).
* A command line parser is provided and can still be used if you choose to provided your own main() function.