Google C++ tesztelési keretrendszer

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.

Főbb jellemzők

Támogatott platformok

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élda egy ingyenes függvény tesztelésére

Például van egy függvény, amely egész számot ad vissza:

int Faktoriális ( int n ); // Faktoriál n

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

Osztály tesztpélda

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.

További funkciók

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

Jegyzetek

  1. Google Testing Blog: Bejelentjük: Új Google C++ tesztelési keretrendszer . Letöltve: 2009. július 16. Az eredetiből archiválva : 2009. április 5..
  2. googletest-translations – Projekttárhely a Google Code-on . Letöltve: 2022. április 28. Az eredetiből archiválva : 2022. április 28..
  3. Tesztbeállítások: Ugyanazon adatkonfiguráció használata több teszthez – Google Test Primer (lefelé irányuló kapcsolat) . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. április 5.. 
  4. Ismert korlátozások – Google Test Primer (nem elérhető link) . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. április 5.. 
  5. Általános szintaxis - Google C++ Mocking Framework for dummy . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. február 8..
  6. Megfelelők: Milyen érvekre számítunk? - Google C++ Mocking Framework for dummy . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. február 8..
  7. Kardinalitások: Hányszor fogják hívni? - Google C++ Mocking Framework for dummy . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. február 8..
  8. Rendezett és rendezetlen hívások – Google C++ Mocking Framework for dumies . Letöltve: 2016. április 25. Az eredetiből archiválva : 2016. február 8..

Linkek