Szukaj…


Wprowadzenie

Testowanie jednostkowe to poziom testowania oprogramowania, który weryfikuje zachowanie i poprawność jednostek kodu.

W C ++ „jednostki kodu” często odnoszą się do klas, funkcji lub grup obu. Testowanie jednostkowe jest często przeprowadzane przy użyciu specjalistycznych „środowisk testowych” lub „bibliotek testowych”, które często używają nietrywialnych wzorców składni lub użytkowania.

W tym temacie zostaną omówione różne strategie i biblioteki lub struktury testów jednostkowych.

Test Google

Google Test to platforma testowa C ++ obsługiwana przez Google. Wymaga zbudowania biblioteki gtest i powiązania jej ze środowiskiem testowym podczas budowania pliku przypadku testowego.

Minimalny przykład

// 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

Złapać

Catch to biblioteka zawierająca tylko nagłówki, która pozwala używać zarówno stylu testowania jednostek TDD, jak i BDD .

Poniższy fragment kodu znajduje się na stronie dokumentacji połowów pod tym linkiem :


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 );
            }
        }
    }
}

Dogodnie te testy będą raportowane w następujący sposób:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow