A Google C++ Testing Framework ( Google Test ) egy könyvtár a C++ nyelvű egységteszteléshez . A forráskód 2008 közepe óta [1] nyílt meg a BSD licenc alatt . A dokumentáció részben orosz nyelvre van lefordítva. [2] .
A Google Test az xUnit tesztelési módszertanra épül , vagyis amikor a program egyes részeit (osztályokat, függvényeket, modulokat) egymástól elkülönítve, elszigetelten tesztelik. Magát a könyvtárat a tesztelés aktív használatával fejlesztik, amikor bármely alkatrészt hozzáadunk a hivatalos verzióhoz, maguknak a változtatásoknak a kódja mellett meg kell írni egy tesztkészletet a helyességük megerősítésére.
A Google Test hivatalosan támogatja a Linuxot , a Windowst és a Mac -et . Ezekhez a platformokhoz a könyvtár biztosítja az összes szükséges build szkriptet. A Google Test azonban AIX , HP-UX , Solaris , Tru64 , zSeries és sok más rendszeren is működik. A hivatalosan nem támogatott platformok esetében a fejlesztőnek magának kell lefordítania a Google tesztet.
Például van egy függvény, amely egész számot ad vissza:
int Faktoriális ( int n ); // Faktoriál nEnnek a függvénynek a tesztje a következő lehet:
// A 0 faktoriális ellenőrzése. TESZT ( FactorialTest , HandlesZeroInput ) { EXPECT_EQ ( 1 , faktorál ( 0 )); } // Ellenőrizze néhány pozitív érték faktoriálisát. TESZT ( FactorialTest , HandlesPositiveInput ) { EXPECT_EQ ( 1 , faktorál ( 1 )); EXPECT_EQ ( 2 , faktorál ( 2 )); EXPECT_EQ ( 6 , faktorál ( 3 )); EXPECT_EQ ( 40320 , Factorial ( 8 )); }Egy Queue nevű FIFO -sor tesztje a következő felülettel:
sablon < típusnév E > // E - elem típusa. class Queue { nyilvános : sor (); void Enqueue ( const E & element ); E * Dequeue (); // NULL értéket ad vissza, ha a sor üres. size_t size () const ; ... };Először egy tesztosztályt ( test fixture ) határoz meg :
class QueueTest : public :: tesztelés :: Teszt { védett : virtual void Beállítás () { q0_ . Sorba állás ( 1 ); q1_ . Sorbaállás ( 2 ); q2_ . Sorba állítás ( 3 ); } Queue < int > q0_ ; Queue < int > q1_ ; Queue < int > q2_ ; };Most maga a teszt (a TEST() helyett a TEST_F() makrót használjuk, mivel a tesztelő függvénynek hozzá kell férnie az osztály mezőihez és metódusaihoz:
// Ellenőrizze a sor inicializálását. TEST_F ( QueueTest , IsEmptyInitially ) { EXPECT_EQ ( 0 , q0_.size ( ) ); } // Ellenőrizze, hogy az elem eltávolításra került-e a sorból. TEST_F ( QueueTest , DequeueWorks ) { int * n = q0_ . sorban állás (); EXPECT_EQ ( NULL , n ); n = q1_ . sorban állás (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 1 , * n ); EXPECT_EQ ( 0 , q1_.size ( ) ); törölve ; _ n = q2_ . sorban állás (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 2 , * n ); EXPECT_EQ ( 1 , q2_ .size ( ) ); törölve ; _ }A Google Tesztben két fő típusú ellenőrzés ( állítás ) létezik --- ASSERT_* és EXPECT_*. Az EXPECT_* használata esetén a teszt továbbra is fut, ha sikertelen, bár a hiba naplózásra kerül, és a teszt egyébként is sikertelen lesz. Ha értelmetlen a teszt folytatása, akkor az ASSERT_* kódot használja. Ez az ellenőrzés leállítja a tesztet, ha az ellenőrzés sikertelen.
A Google Tesztkönyvtár szorosan kapcsolódik a Google Mock könyvtárhoz , amely lehetővé teszi annak tesztelését, hogy az osztály hogyan működik együtt másokkal. Ezzel a könyvtárral megbizonyosodhat arról, hogy az osztály meghívja más objektumok metódusait [5] , és azt is ellenőrizheti, hogy ezek a metódusok a megfelelő paraméterértékekkel [6] , a megfelelő számú alkalommal [7] legyenek meghívva a helyes sorrend [8] .