2017-04-06 5 views
0

Hintergrund: Ich schreibe eine Session-Tabelle für eingehenden Datenverkehr. Diese Tabelle sollte alle aktiven UDP/TCP-Verbindungen enthalten.Allgemeine Fragen zu parametrisierten Test in googeltest

Ich verwende googletest-Paket, um meine Implementierung zu testen. Ich bereite einen parametrisierte Test auf dem Halter in folgendem Format basiert:

class SessionTest - initialize all staff. 

struct ConnectionInfo - holds set of connection parameters (IPs, ports, etc..) 

class SessionTestPrepare : SessionTest , testing::WithParamInterface<ConnectionInfo> - initialization. 

TEST_P(SessionTestPrepare, test) - holds the test cases and logic. 

INSTANTIATE_TEST_CASE_P(default, SessionTestPrepare_ testing::Values( 
ConectionInfo{}, 
ConectionInfo{}, 
ConectionInfo{}, 

)

Ich bemerkte, dass jedes Mal, wenn neue Parameter getestet werden, die Session Konstruktor und Setup-Funktion (und natürlich destructor genannt und Niederreissen).
Hinweis: Meine SessionTabelle wird hier deklariert und initialisiert.

  1. Gibt es eine Möglichkeit, den Aufruf von SetUp und TearDown nach jedem Parametertest zu vermeiden?
  2. Gibt es eine Möglichkeit, den Zustand meiner Sitzungstabelle nach jedem Test zu halten, ohne es global zu machen (d. H. Wenn die zweiten Verbindungsparameter getestet werden, befindet sich der erste noch in der Tabelle)?

Antwort

2

auszuführen einzurichten und reißen nur einmal in einer Testvorrichtung nach unten verwenden SetUpTestCase und TearDownTestCase statt SetUp und TearDown. Und die kann in Fixture mit statischen Membervariablen gespeichert werden. Zum Beispiel:

class SessionTestPrepare : public ::testing::WithParamInterface<ConnectionInfo> //... 
{ 
public: 
    static void SetUpTestCase(); 
    static void TearDownTestCase(); 

    static ConnectionInfo * shared_data; 
    //... 
} 

SetUpTestCase aufgerufen wird, bevor der erste Parameter Test beginnt und TearDownTestCase wird aufgerufen, nachdem der letzte Parameter Test endet. Sie können die freigegebenen Ressourcen in diesen Funktionen erstellen/löschen.

Verwandte Themen