2017-04-06 1 views
0

background: J'écris une table de session pour le trafic entrant. Cette table doit contenir toutes les connexions UDP/TCP actives. J'utilise le paquet googletest pour tester ma mise en œuvre. Je prépare un test paramétré en fonction de fixation dans le format suivant:Questions générales sur le test paramétré dans googletest

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{}, 

)

Je remarqué que chaque fois que de nouveaux paramètres sont testés, le constructeur SessionTest et la fonction d'installation sont appelés (et bien sûr destructor et Abattre).
Remarque: ma sessionTable est déclarée et initialisée ici.

  1. est-il un moyen d'éviter d'appeler à installer et à TearDown après chaque série de test de paramètres?
  2. Y at-il un moyen de conserver l'état de ma table de session après chaque test sans le rendre global (c'est-à-dire lors du test des deuxièmes paramètres de connexion, le premier est toujours dans la table)?

Répondre

2

Pour exécuter l'installation et le démontage qu'une seule fois dans un appareil d'essai, utilisez SetUpTestCase et TearDownTestCase au lieu de SetUp et TearDown. Et le shared resources peut être stocké dans l'appareil avec des variables membres statiques. Par exemple:

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

    static ConnectionInfo * shared_data; 
    //... 
} 

SetUpTestCase est appelé avant le premier test de paramètre commence et TearDownTestCase est appelé après le dernier test de fin de paramètre. Vous pouvez créer/supprimer les ressources partagées dans ces fonctions.