Catch2 é principalmente uma estrutura de teste de unidade para C++, mas também fornece recursos básicos de micro-benchmarking e macros BDD simples.
A principal vantagem do Catch2 é que seu uso é simples e natural. Os nomes dos testes não precisam ser identificadores válidos, as asserções parecem expressões booleanas normais do C++ e as seções fornecem uma maneira agradável e local de compartilhar código de configuração e desmontagem em testes.
Exemplo de teste de unidade
# 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 );
}
Exemplo 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 );
};
}
Observe que os benchmarks não são executados por padrão, então você precisa executá-los explicitamente com a tag [!benchmark]
.
Você está no branch devel
, onde a versão v3 está sendo desenvolvida. A v3 traz uma série de mudanças significativas, sendo a principal delas que Catch2 não é mais uma biblioteca de cabeçalho único. Catch2 agora se comporta como uma biblioteca normal, com vários cabeçalhos e implementação compilada separadamente.
A documentação está sendo atualizada lentamente para levar em conta essas mudanças, mas esse trabalho ainda está em andamento.
Para migrar das versões v2 para v3, você deve consultar nossa documentação. Ele fornece diretrizes simples sobre como começar e coleta os problemas de migração mais comuns.
Para a versão principal anterior do Catch2, consulte o branch v2.x
aqui no GitHub.
Esta documentação compreende estas três partes: