Google C++ Testing Framework ( Google Test ) on kirjasto C++ :n yksikkötestausta varten . Lähdekoodi on ollut avoinna vuoden 2008 puolivälistä [1] BSD - lisenssillä . Dokumentaatio on käännetty osittain venäjäksi. [2] .
Google Test perustuu xUnit- testausmetodologiaan , eli kun ohjelman yksittäisiä osia (luokat, funktiot, moduulit) testataan erikseen, erillään. Itse kirjasto on kehitetty aktiivisella testauksen käytöllä, kun lisäät osia viralliseen versioon, itse muutosten koodin lisäksi on kirjoitettava joukko testejä niiden oikeellisuuden varmistamiseksi.
Google Test tukee virallisesti Linuxia , Windowsia ja Macia . Näille alustoille kirjasto tarjoaa kaikki tarvittavat koontiskriptit. Google Test toimii kuitenkin myös AIX- , HP-UX- , Solaris- , Tru64- , zSeries- ja monissa muissa järjestelmissä. Virallisesti tukemattomilla alustoilla kehittäjän on koottava Google-testi itse.
Esimerkiksi on funktio, joka palauttaa kokonaisluvun:
int Factorial ( int n ); // Palauttaa faktoriaalin nTämän toiminnon testi voisi olla seuraava:
// Tarkista 0. TEST ( FactorialTest , HandlesZeroInput ) { EXPECT_EQ ( 1 , tekijä ( 0 )); } // Tarkista joidenkin positiivisten arvojen tekijä. TEST ( FactorialTest , HandlesPositiveInput ) { EXPECT_EQ ( 1 , tekijä ( 1 )); EXPECT_EQ ( 2 , tekijä ( 2 )); EXPECT_EQ ( 6 , tekijä ( 3 )); EXPECT_EQ ( 40320 , Factorial ( 8 )); }Testi FIFO -jonolle nimeltä Queue seuraavalla käyttöliittymällä:
template < typename E > // E - elementtityyppi. luokan jono { julkinen : jono (); void Enqueue ( const E & element ); E * Joosta (); // Palauttaa arvon NULL, jos jono on tyhjä. koko_t koko () const ; ... };Ensin määritetään testiluokka ( testilaite ) :
class QueueTest : julkinen :: testaus :: Test { suojattu : virtual void Asennus () { q0_ . Jono ( 1 ); q1_ . Jono ( 2 ); q2_ . Jono ( 3 ); } Jono < int > q0_ ; Jono < int > q1_ ; Jono < int > q2_ ; };Nyt itse testi (makroa TEST_F() käytetään TEST() sijaan, koska testausfunktiolla on oltava pääsy luokan kenttiin ja menetelmiin:
// Tarkista jonon alustus. TEST_F ( QueueTest , IsEmptyInitially ) { EXPECT_EQ ( 0 , q0_.koko ( ) ); } // Tarkista, onko elementti poistettu jonosta. TEST_F ( QueueTest , DequeueWorks ) { int * n = q0_ . jonottaa (); EXPECT_EQ ( NULL , n ); n = q1_ . jonottaa (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 1 , * n ); EXPECT_EQ ( 0 , q1_.size ( ) ); poistettu ; _ n = q2_ . jonottaa (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 2 , * n ); EXPECT_EQ ( 1 , q2_ .koko ( ) ); poistettu ; _ }Google Testissä on kaksi päätyyppiä tarkistuksia ( väitteitä ) --- ASSERT_* ja EXPECT_*. Jos EXPECT_* on käytössä, testi jatkuu, jos se epäonnistuu, vaikka virhe kirjataan ja testi epäonnistuu joka tapauksessa. Jos testin jatkaminen on turhaa, käytetään ASSERT_*. Tämä tarkistus lopettaa testin, jos tarkistus epäonnistuu.
Google Test -kirjasto liittyy läheisesti Google Mock -kirjastoon , jonka avulla voit testata, miten luokkasi on vuorovaikutuksessa muiden kanssa. Tämän kirjaston avulla voit varmistaa, että luokkasi kutsuu muiden objektien menetelmiä [5] ja myös tarkistaa, että näitä menetelmiä kutsutaan oikeilla parametriarvoilla [6] , oikea määrä [7] , oikea järjestys [8] .