수색…


소개

단위 테스트는 소프트웨어 테스트에서 코드 단위의 동작과 정확성을 검증하는 수준입니다.

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

잡기

CatchTDDBDD 단위 테스트 스타일을 모두 사용할 수있는 헤더 전용 라이브러리입니다.

다음 스 니펫은 이 링크 의 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