Catch2 — это в основном среда модульного тестирования для C++, но она также предоставляет базовые функции микротестирования и простые макросы BDD.
Главное преимущество Catch2 в том, что использовать его просто и естественно. Имена тестов не обязательно должны быть допустимыми идентификаторами, утверждения выглядят как обычные логические выражения C++, а разделы предоставляют удобный и локальный способ совместного использования кода настройки и демонтажа в тестах.
Пример модульного теста
# include < catch2/catch_test_macros.hpp >
# include < cstdint >
uint32_t factorial ( uint32_t number ) {
return number <= 1 ? number : factorial (number- 1 ) * number;
}
TEST_CASE ( " Factorials are computed " , " [factorial] " ) {
REQUIRE ( factorial ( 1 ) == 1 );
REQUIRE ( factorial ( 2 ) == 2 );
REQUIRE ( factorial ( 3 ) == 6 );
REQUIRE ( factorial ( 10 ) == 3'628'800 );
}
Пример микробенчмарка
# include < catch2/catch_test_macros.hpp >
# include < catch2/benchmark/catch_benchmark.hpp >
# include < cstdint >
uint64_t fibonacci ( uint64_t number) {
return number < 2 ? number : fibonacci (number - 1 ) + fibonacci (number - 2 );
}
TEST_CASE ( " Benchmark Fibonacci " , " [!benchmark] " ) {
REQUIRE ( fibonacci ( 5 ) == 5 );
REQUIRE ( fibonacci ( 20 ) == 6'765 );
BENCHMARK ( " fibonacci 20 " ) {
return fibonacci ( 20 );
};
REQUIRE ( fibonacci ( 25 ) == 75'025 );
BENCHMARK ( " fibonacci 25 " ) {
return fibonacci ( 25 );
};
}
Обратите внимание, что тесты не запускаются по умолчанию, поэтому вам нужно запускать их явно с тегом [!benchmark]
.
Вы находитесь в ветке devel
, где разрабатывается версия v3. Версия 3 содержит ряд существенных изменений, главное из которых заключается в том, что Catch2 больше не является библиотекой с одним заголовком. Catch2 теперь ведет себя как обычная библиотека с несколькими заголовками и отдельно скомпилированной реализацией.
Документация постепенно обновляется с учетом этих изменений, но в настоящее время эта работа все еще продолжается.
Для перехода с версий v2 на v3 вам следует просмотреть нашу документацию. В нем представлены простые рекомендации по началу работы и собраны наиболее распространенные проблемы миграции.
Предыдущую основную версию Catch2 можно найти в ветке v2.x
здесь, на GitHub.
Данная документация состоит из трех частей: