Catch2 es principalmente un marco de pruebas unitarias para C++, pero también proporciona funciones básicas de microevaluación comparativa y macros BDD simples.
La principal ventaja de Catch2 es que su uso es sencillo y natural. Los nombres de las pruebas no tienen que ser identificadores válidos, las aserciones parecen expresiones booleanas normales de C++ y las secciones proporcionan una forma agradable y local de compartir código de configuración y desmontaje en las pruebas.
Ejemplo de prueba unitaria
# 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 );
}
Ejemplo de microbenchmark
# 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 );
};
}
Tenga en cuenta que los puntos de referencia no se ejecutan de forma predeterminada, por lo que debe ejecutarlos explícitamente con la etiqueta [!benchmark]
.
Estás en la rama devel
, donde se está desarrollando la versión v3. v3 trae una serie de cambios significativos, el más importante es que Catch2 ya no es una biblioteca de un solo encabezado. Catch2 ahora se comporta como una biblioteca normal, con múltiples encabezados y una implementación compilada por separado.
La documentación se está actualizando lentamente para tener en cuenta estos cambios, pero este trabajo aún está en curso.
Para migrar de las versiones v2 a v3, debe consultar nuestra documentación. Proporciona directrices sencillas para empezar y recopila los problemas de migración más comunes.
Para la versión principal anterior de Catch2, consulte la rama v2.x
aquí en GitHub.
Esta documentación consta de estas tres partes: