Cadrul de testare Google C++

Google C++ Testing Framework ( Google Test ) este o bibliotecă pentru testarea unitară în C++ .  Codul sursă este deschis de la mijlocul anului 2008 [1] sub licența BSD . Documentația este tradusă parțial în limba rusă. [2] .

Google Test este construit pe metodologia de testare xUnit , adică atunci când părți individuale ale programului (clase, funcții, module) sunt testate separat unele de altele, izolat. Biblioteca în sine este dezvoltată cu utilizarea activă a testării, atunci când adăugați orice părți la versiunea oficială, pe lângă codul modificărilor în sine, este necesar să scrieți un set de teste pentru a confirma corectitudinea acestora.

Caracteristici principale

Platforme acceptate

Google Test acceptă oficial Linux , Windows și Mac . Pentru aceste platforme, biblioteca oferă toate scripturile de compilare necesare. Cu toate acestea, Google Test funcționează și pe AIX , HP-UX , Solaris , Tru64 , zSeries și multe alte sisteme. Pentru platformele neacceptate oficial, dezvoltatorul trebuie să alcătuiască el însuși Google Test.

Un exemplu de testare a unei funcții libere

De exemplu, există o funcție care returnează un număr întreg:

int Factorial ( int n ); // Returnează factorial n

Testul pentru această funcție ar putea fi astfel:

// Verificați factorial de 0. TEST ( Test Factorial , HandlesZeroInput ) { EXPECT_EQ ( 1 , factorial ( 0 )); } // Verificați factorialul unor valori pozitive. TEST ( FactorialTest , HandlesPositiveInput ) { EXPECT_EQ ( 1 , factorial ( 1 )); EXPECT_EQ ( 2 , factorial ( 2 )); EXPECT_EQ ( 6 , factorial ( 3 )); EXPECT_EQ ( 40320 , factorial ( 8 )); }

Exemplu de test de clasă

Un test pentru o coadă FIFO numită Queue cu următoarea interfață:

template < typename E > // E - tip element. clasa coadă { public : coada (); void Enqueue ( const E & element ); E * Scoateți la coadă (); // Returnează NULL dacă coada este goală. size_t size () const ; ... };

În primul rând, este definită o clasă de testare (dispozitiv de testare ) : 

clasa QueueTest : public :: testing :: Test { protejat : virtual void SetUp () { q0_ . coadă ( 1 ); q1_ . coadă ( 2 ); q2_ . coadă ( 3 ); } Coada < int > q0_ ; Coada < int > q1_ ; Coada < int > q2_ ; };

Acum testul însuși (macrograma TEST_F() este folosită în loc de TEST(), deoarece funcția de testare trebuie să aibă acces la câmpurile și metodele clasei):

// Verificați inițializarea cozii. TEST_F ( QueueTest , IsEmptyInitially ) { EXPECT_EQ ( 0 , q0_.size ( ) ); } // Verificați dacă elementul este eliminat din coadă. TEST_F ( QueueTest , DequeueWorks ) { int * n = q0_ . scoate la coadă (); EXPECT_EQ ( NULL , n ); n = q1_ . scoate la coadă (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 1 , * n ); EXPECT_EQ ( 0 , q1_.size ( ) ); sterge ; _ n = q2_ . scoate la coadă (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 2 , * n ); EXPECT_EQ ( 1 , q2_ .size ( ) ); sterge ; _ }

Există două tipuri principale de verificări ( aserțiuni ) în Google Test --- ASSERT_* și EXPECT_*. Dacă se folosește EXPECT_*, testul va continua să ruleze dacă eșuează, deși eșecul va fi înregistrat și testul va eșua oricum. Dacă este inutil să continui testul, se folosește ASSERT_*. Această verificare încheie testul dacă verificarea eșuează.

Caracteristici suplimentare

Biblioteca Google Test este strâns legată de biblioteca Google Mock , care vă permite să testați modul în care clasa dvs. interacționează cu ceilalți. Cu această bibliotecă, vă puteți asigura că clasa dvs. apelează metode ale altor obiecte [5] și, de asemenea, verifica că aceste metode sunt apelate cu valorile parametrilor potrivite [6] , de numărul potrivit de ori [7] , în ordine corectă [8] .

Note

  1. Blogul de testare Google: Anunț: noul cadru de testare Google C++ . Consultat la 16 iulie 2009. Arhivat din original la 5 aprilie 2009.
  2. googletest-translations - Găzduire proiect pe Google Code . Preluat la 28 aprilie 2022. Arhivat din original la 28 aprilie 2022.
  3. Test Fixtures: Utilizarea aceleiași configurații de date pentru mai multe teste - Google Test Primer (link în jos) . Consultat la 25 aprilie 2016. Arhivat din original pe 5 aprilie 2016. 
  4. Limitări cunoscute - Google Test Primer (link indisponibil) . Consultat la 25 aprilie 2016. Arhivat din original pe 5 aprilie 2016. 
  5. Sintaxă generală - Cadrul de batjocură Google C++ pentru manechin . Consultat la 25 aprilie 2016. Arhivat din original pe 8 februarie 2016.
  6. Matchers: La ce argumente ne așteptăm? - Google C++ Mocking Framework pentru manechini . Consultat la 25 aprilie 2016. Arhivat din original pe 8 februarie 2016.
  7. Cardinalități: De câte ori va fi numit? - Google C++ Mocking Framework pentru manechini . Consultat la 25 aprilie 2016. Arhivat din original pe 8 februarie 2016.
  8. Apeluri ordonate vs neordonate - Cadrul de batjocură Google C++ pentru manechin . Consultat la 25 aprilie 2016. Arhivat din original pe 8 februarie 2016.

Link -uri