2016-05-04 7 views
1

Im als Testrahmen für mein Projekt mit Gtest und ich brauche den folgenden Parameterwert zu verwenden, die als Gtest Parameter innerhalb des Testfall übergeben wirdMit Gtest spezifischen Parameter im Testfall

./gtest_bin --gtest_repeat=5

derzeit, was ich tue ist, habe ich verlängert einen benutzerdefinierten Listener erstellt von „EmptyTestEventListener“ und die Iteration Wert auf eine globale Variable übergeben, wenn der Rückruf an die folgende Funktion, wie folgend empfangen wird,

customListener Klasse

class customListener : public testing::EmptyTestEventListener 
{ 
    customListener(int *iteration) : m_iteration(iteration) {} 

    virtual void OnTestIterationStart(const testing::UnitTest& unit_test, int iteration) 
    { 
     *m_iteration = iteration; 
    } 
} 

Haupt

int g_iteration; 

int main(int argc, char **argv) 
{ 
    testing::InitGoogleTest(&argc, argv); 

    if(argc > 1) 
     g_array_length = atoi(argv[1]); 

    testing::TestEventListeners& listners = testing::UnitTest::GetInstance()->listeners(); 
    listners.Append(new printers::customListener(&g_iteration)); 

    return RUN_ALL_TESTS(); 
} 

Gibt es einen einfacheren Weg, um diesen Gtest Parameterwert zu erhalten?

Wenn generalisiert, gibt es eine Möglichkeit, einen gtestspezifischen Parameterwert zu erhalten, der in einem Testfall verwendet werden kann?

+0

Sind 'g_iteration' und' g_array_length' die gleichen? – PiotrNycz

+0

'g_array_length' ist eine separate Variable, Sie können sie ignorieren – BAdhi

Antwort

1

WICHTIGER HINWEIS Bitte mit großer Sorgfalt verwenden - da diese Funktion nicht dokumentiert ist und könnte geändert werden (das heißt, es könnte aufhören zu arbeiten) in der nächsten Gtest/gmock Versionen.

Sie können auf jede Flagge von ::testing::GTEST_FLAG(flag_name) zugreifen - in Ihrem Fall - ::testing::GTEST_FLAG(repeat).

Ich habe diese Informationen indirekt von dieser manual und durch Prüfung ggth.h Datei.

+0

Danke für die Info. Nachdem Sie über die Flagge gesprochen haben, habe ich die gtest Variablen überprüft. Aber in der gtest-Version, die ich gerade verwende, gibt es diese Möglichkeit als die Variable - ':: testing :: FLAGS_ ' also in diesem Fall ':: testing :: FLAGS_gtest_repeat'. Genau wie das, was Sie in der Notiz – BAdhi

+0

'GTEST_FLAG' erwähnt haben, ist ein Makro, das definiert ist als' #define GTEST_FLAG (Name) FLAGS_gtest _ ## name' - also sind wir beide richtig - aber ich glaube - meine Version ist ein wenig sicherer ... – PiotrNycz