Google C++ -testauskehys

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.

Pääominaisuudet

Tuetut alustat

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.

Esimerkki ilmaisen funktion testaamisesta

Esimerkiksi on funktio, joka palauttaa kokonaisluvun:

int Factorial ( int n ); // Palauttaa faktoriaalin n

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

Luokkatestiesimerkki

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.

Lisäominaisuudet

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] .

Muistiinpanot

  1. Google Testing Blog: Ilmoitamme: Uusi Google C++ -testauskehys . Haettu 16. heinäkuuta 2009. Arkistoitu alkuperäisestä 5. huhtikuuta 2009.
  2. googletest-translations - Project Hosting Google Codessa . Haettu 28. huhtikuuta 2022. Arkistoitu alkuperäisestä 28. huhtikuuta 2022.
  3. Test Fixtures: Saman tietomäärityksen käyttäminen useissa testeissä – Google Test Primer (downlink) . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 5. huhtikuuta 2016. 
  4. Tunnetut rajoitukset - Google Test Primer (linkki ei saatavilla) . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 5. huhtikuuta 2016. 
  5. Yleinen syntaksi - Google C++ Pilaava Framework tutille . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 8. helmikuuta 2016.
  6. Vastaajat: Mitä argumentteja odotamme? - Google C++ Mocking Framework nukkeille . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 8. helmikuuta 2016.
  7. Kardinaalit: Kuinka monta kertaa sitä kutsutaan? - Google C++ Mocking Framework nukkeille . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 8. helmikuuta 2016.
  8. Tilatut vs. järjestämättömät puhelut - Google C++ Mocking Framework nukkeille . Haettu 25. huhtikuuta 2016. Arkistoitu alkuperäisestä 8. helmikuuta 2016.

Linkit