Google C++ Testing Framework

Google C++ Testing Framework ( Google Test ) är ett bibliotek för enhetstestning i C++ .  Källkoden har varit öppen sedan mitten av 2008 [1] under BSD-licensen . Dokumentationen är delvis översatt till ryska. [2] .

Google Test bygger på testmetoden xUnit , det vill säga när enskilda delar av programmet (klasser, funktioner, moduler) testas separat från varandra, isolerat. Biblioteket i sig är utvecklat med aktiv användning av testning, när du lägger till några delar till den officiella versionen, förutom koden för själva ändringarna, är det nödvändigt att skriva en uppsättning tester för att bekräfta deras korrekthet.

Huvuddrag

Plattformar som stöds

Google Test stöder officiellt Linux , Windows och Mac . För dessa plattformar tillhandahåller biblioteket alla nödvändiga byggskript. Google Test fungerar dock även på AIX , HP-UX , Solaris , Tru64 , zSeries och många andra system. För plattformar som inte stöds officiellt måste utvecklaren själv kompilera Google-testet.

Ett exempel på att testa en gratis funktion

Det finns till exempel en funktion som returnerar ett heltal:

int Faktoriell ( int n ); // Return factorial n

Testet för denna funktion kan vara så här:

// Kontrollera faktorvärdet 0. TEST ( FacttorialTest , HandlesZeroInput ) { EXPECT_EQ ( 1 , Faktoriell ( 0 )); } // Kontrollera faktorn för några positiva värden. TEST ( FactoryTest , HandlesPositiveInput ) { EXPECT_EQ ( 1 , Faktoriell ( 1 )); EXPECT_EQ ( 2 , Faktoriell ( 2 )); EXPECT_EQ ( 6 , Faktoriell ( 3 )); EXPECT_EQ ( 40320 , Faktoriell ( 8 )); }

Exempel på klasstest

Ett test för en FIFO -kö med namnet Queue med följande gränssnitt:

mall < typnamn E > // E - elementtyp. klasskö { _ offentliga : (); void Enqueue ( const E & element ); E * Avkö (); // Returnerar NULL om kön är tom. storlek_t storlek () const ; ... };

Först definieras en testklass ( testfixtur ) : 

klass QueueTest : public :: testing :: Test { skyddad : virtual void SetUp () { q0_ . ( 1 ); q1_ . ( 2 ); q2_ . ( 3 ); } < int > q0_ ; < int > q1_ ; < int > q2_ ; };

Nu används själva testet (makrot TEST_F() istället för TEST(), eftersom testfunktionen måste ha tillgång till klassens fält och metoder):

// Kontrollera initieringen av kön. TEST_F ( QueueTest , IsEmptyInitially ) { EXPECT_EQ ( 0 , q0_.storlek ( ) ); } // Kontrollera om elementet är borttaget från kön. TEST_F ( QueueTest , DequeueWorks ) { int * n = q0_ . dequeue (); EXPECT_EQ ( NULL , n ); n = q1_ . dequeue (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 1 , * n ); EXPECT_EQ ( 0 , q1_.size ( ) ); radera ; _ n = q2_ . dequeue (); ASSERT_TRUE ( n != NULL ); EXPECT_EQ ( 2 , * n ); EXPECT_EQ ( 1 , q2_.storlek ( ) ); radera ; _ }

Det finns två huvudtyper av kontroller ( påståenden ) i Google Test --- ASSERT_* och EXPECT_*. Om EXPECT_* används fortsätter testet att köras om det misslyckas, även om felet kommer att loggas och testet misslyckas ändå. Om det är meningslöst att fortsätta testet, används ASSERT_*. Denna kontroll avslutar testet om kontrollen misslyckas.

Ytterligare funktioner

Google Test-biblioteket är nära relaterat till Google Mock- biblioteket , som låter dig testa hur din klass interagerar med andra. Med det här biblioteket kan du se till att din klass anropar metoder för andra objekt [5] , och även kontrollera att dessa metoder anropas med rätt parametervärden [6] , rätt antal gånger [7] , i rätt ordning [8] .

Anteckningar

  1. Google Testing Blog: Tillkännager: Nytt Google C++ Testing Framework . Hämtad 16 juli 2009. Arkiverad från originalet 5 april 2009.
  2. googletest-translations - Projektvärd på Google Code . Hämtad 28 april 2022. Arkiverad från originalet 28 april 2022.
  3. Testfixturer: Använda samma datakonfiguration för flera tester - Google Test Primer (nedlänk) . Hämtad 25 april 2016. Arkiverad från originalet 5 april 2016. 
  4. Kända begränsningar - Google Test Primer (inte tillgänglig länk) . Hämtad 25 april 2016. Arkiverad från originalet 5 april 2016. 
  5. Allmän syntax - Google C++ Mocking Framework för dummies . Hämtad 25 april 2016. Arkiverad från originalet 8 februari 2016.
  6. Matchare: Vilka argument förväntar vi oss? - Google C++ Mocking Framework för dummies . Hämtad 25 april 2016. Arkiverad från originalet 8 februari 2016.
  7. Kardinaliteter: Hur många gånger kommer det att kallas? - Google C++ Mocking Framework för dummies . Hämtad 25 april 2016. Arkiverad från originalet 8 februari 2016.
  8. Ordnade vs oordnade samtal - Google C++ Mocking Framework for dummies . Hämtad 25 april 2016. Arkiverad från originalet 8 februari 2016.

Länkar