C++
C ++의 단위 테스트
수색…
소개
단위 테스트는 소프트웨어 테스트에서 코드 단위의 동작과 정확성을 검증하는 수준입니다.
C ++에서 "코드 단위"는 종종 클래스, 함수 또는 둘 중 하나의 그룹을 나타냅니다. 단위 테스트는 흔히 흔히 사용되지 않는 구문이나 사용 패턴을 사용하는 특수한 "테스팅 프레임 워크"또는 "테스팅 라이브러리"를 사용하여 수행됩니다.
이 주제에서는 다양한 전략과 단위 테스트 라이브러리 또는 프레임 워크를 검토합니다.
Google 테스트
Google Test는 Google에서 유지 관리하는 C ++ 테스트 프레임 워크입니다. 테스트 케이스 파일을 만들 때 gtest
라이브러리를 만들고 테스트 프레임 워크에 링크해야합니다.
최소 예제
// main.cpp
#include <gtest/gtest.h>
#include <iostream>
// Google Test test cases are created using a C++ preprocessor macro
// Here, a "test suite" name and a specific "test name" are provided.
TEST(module_name, test_name) {
std::cout << "Hello world!" << std::endl;
// Google Test will also provide macros for assertions.
ASSERT_EQ(1+1, 2);
}
// Google Test can be run manually from the main() function
// or, it can be linked to the gtest_main library for an already
// set-up main() function primed to accept Google Test test cases.
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
// Build command: g++ main.cpp -lgtest
잡기
Catch 는 TDD 및 BDD 단위 테스트 스타일을 모두 사용할 수있는 헤더 전용 라이브러리입니다.
다음 스 니펫은 이 링크 의 Catch 문서 페이지에 있습니다.
SCENARIO( "vectors can be sized and resized", "[vector]" ) {
GIVEN( "A vector with some items" ) {
std::vector v( 5 );
REQUIRE( v.size() == 5 );
REQUIRE( v.capacity() >= 5 );
WHEN( "the size is increased" ) {
v.resize( 10 );
THEN( "the size and capacity change" ) {
REQUIRE( v.size() == 10 );
REQUIRE( v.capacity() >= 10 );
}
}
WHEN( "the size is reduced" ) {
v.resize( 0 );
THEN( "the size changes but not capacity" ) {
REQUIRE( v.size() == 0 );
REQUIRE( v.capacity() >= 5 );
}
}
WHEN( "more capacity is reserved" ) {
v.reserve( 10 );
THEN( "the capacity changes but not the size" ) {
REQUIRE( v.size() == 5 );
REQUIRE( v.capacity() >= 10 );
}
}
WHEN( "less capacity is reserved" ) {
v.reserve( 0 );
THEN( "neither size nor capacity are changed" ) {
REQUIRE( v.size() == 5 );
REQUIRE( v.capacity() >= 5 );
}
}
}
}
편리하게도이 테스트는 다음과 같이 실행될 때보고됩니다.
Scenario: vectors can be sized and resized Given: A vector with some items When: more capacity is reserved Then: the capacity changes but not the size
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow