diff --git a/docs/Readme.md b/docs/Readme.md index 821e6fca..a501c505 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -33,7 +33,7 @@ FAQ: * [Known limitations](limitations.md#top) Other: -* [Why Catch?](why-catch.md#top) +* [Why Catch2?](why-catch.md#top) * [Migrating from v2 to v3](migrate-v2-to-v3.md#top) * [Open Source Projects using Catch](opensource-users.md#top) * [Commercial Projects using Catch](commercial-users.md#top) diff --git a/docs/why-catch.md b/docs/why-catch.md index 86cc55bc..a4b8c2e2 100644 --- a/docs/why-catch.md +++ b/docs/why-catch.md @@ -6,40 +6,53 @@ including (but not limited to), [Google Test](http://code.google.com/p/googletest/), [Boost.Test](http://www.boost.org/doc/libs/1_49_0/libs/test/doc/html/index.html), [CppUnit](http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page), -[Cute](http://www.cute-test.com), +[Cute](http://www.cute-test.com), and [many, many more](http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B). -So what does Catch bring to the party that differentiates it from these? Apart from a Catchy name, of course. +So what does Catch2 bring to the party that differentiates it from these? Apart from the catchy name, of course. + ## Key Features -* Quick and Really easy to get started. Just download catch.hpp, `#include` it and you're away. -* No external dependencies. As long as you can compile C++11 and have a C++ standard library available. +* Quick and easy to get started. Just download two files, add them into your project and you're away. +* No external dependencies. As long as you can compile C++14 and have the C++ standard library available. * Write test cases as, self-registering, functions (or methods, if you prefer). * Divide test cases into sections, each of which is run in isolation (eliminates the need for fixtures). * Use BDD-style Given-When-Then sections as well as traditional unit test cases. * Only one core assertion macro for comparisons. Standard C/C++ operators are used for the comparison - yet the full expression is decomposed and lhs and rhs values are logged. * Tests are named using free-form strings - no more couching names in legal identifiers. + ## Other core features * Tests can be tagged for easily running ad-hoc groups of tests. -* Failures can (optionally) break into the debugger on Windows and Mac. +* Failures can (optionally) break into the debugger on common platforms. * Output is through modular reporter objects. Basic textual and XML reporters are included. Custom reporters can easily be added. * JUnit xml output is supported for integration with third-party tools, such as CI servers. * A default main() function is provided, 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. -* Catch can test itself. * Alternative assertion macro(s) report failures but don't abort the test case -* Floating point tolerance comparisons are built in using an expressive Approx() syntax. +* Good set of facilities for floating point comparisons (`Catch::Approx` and full set of matchers) * Internal and friendly macros are isolated so name clashes can be managed -* Matchers +* Data generators (data driven test support) +* Hamcrest-style Matchers for testing complex properties +* Microbenchmarking support -## Who else is using Catch? -See the list of [open source projects using Catch](opensource-users.md#top). +## Who else is using Catch2? -See the [tutorial](tutorial.md#top) to get more of a taste of using Catch in practice +A whole lot of people. According to the 2021 Jetbrains C++ ecosystem survey, +about 11% of C++ programmers use Catch2 for unit testing, making it the +second most popular unit testing framework. + +You can also take a look at the (incomplete) list of [open source projects](opensource-users.md#top) +or the (very incomplete) list of [commercial users of Catch2](commercial-users.md#top) +for some idea on who else also uses Catch2. + +--- + +See the [tutorial](tutorial.md#top) to get more of a taste of using +Catch2 in practice. ---