Catch2
v3.7.1
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]
태그를 사용하여 명시적으로 실행해야 합니다.
당신은 v3 버전이 개발되고 있는 devel
브랜치에 있습니다. v3은 여러 가지 중요한 변화를 가져왔습니다. 가장 큰 변화는 Catch2가 더 이상 단일 헤더 라이브러리가 아니라는 것입니다. Catch2는 이제 여러 헤더와 별도로 컴파일된 구현을 갖춘 일반 라이브러리처럼 작동합니다.
이러한 변경 사항을 고려하여 문서가 천천히 업데이트되고 있지만 이 작업은 현재 계속 진행 중입니다.
v2 릴리스에서 v3으로 마이그레이션하려면 당사 설명서를 참조해야 합니다. 시작에 대한 간단한 지침을 제공하고 가장 일반적인 마이그레이션 문제를 수집합니다.
Catch2의 이전 주요 버전에 대해서는 여기 GitHub의 v2.x
분기를 살펴보세요.
이 문서는 다음 세 부분으로 구성됩니다.