Wie man Parameter an den GTest übergibt
-
26-10-2019 - |
Frage
Wie kann ich Parameter an meine Testsuiten übergeben?
gtest --number-of-input=5
Ich habe den folgenden Main GTest -Code. Und --number-of-input=5
sollte an initgoogletest () übergeben werden.
#include <iostream>
#include <gtest/gtest.h>
int main(int argc, char **argv) {
std::cout << "Running main() from gtest_main.cc\n";
::testing::GTEST_FLAG(output) = "xml:hello.xml";
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Ich weiß nicht, wie ich meinen Parameter wie folgt an die Testsuiten/Fälle übergeben kann?
class TestTwo : public QuickTest {
protected:
virtual void SetUp() {
QuickTest::SetUp();
square = new Square(10);
circle = new Circle(10);
}
virtual void TearDown() {
delete square;
delete circle;
QuickTest::TearDown();
}
Square* square;
Circle* circle;
};
// Now, let's write tests using the QueueTest fixture.
// Tests the default constructor.
TEST_F(TestOne, DefaultConstructor) {
EXPECT_EQ(100.0, square->area());
}
TEST_F(TestOne, DefaultDestructor) {
EXPECT_EQ(1,1);
}
TEST_F(TestOne, VHDL_EMIT_Passthrough) {
EXPECT_EQ(1,1);
}
TEST_F(TestOne, VHDL_BUILD_Passthrough) {
EXPECT_EQ(1,1);
}
Hinzugefügt
Ich habe die Hauptmethode geändert, um den Argv [i] danach zu zeigen InitGoogleTest()
.
int main(int argc, char **argv) {
std::cout << "Running main() from gtest_main.cc\n";
::testing::GTEST_FLAG(output) = "xml:hello.xml";
testing::InitGoogleTest(&argc, argv);
for (int i = 0; i < argc; i++) {
cout << i << ":" << argv[i] << endl;
}
Dies sind die Argumente, die dem GTEST gegeben wurden: ./s --number-of-input=5 --gtest_filter=Test_Cases1*
.
Dies sind die Ergebnisse:
Running main() from gtest_main.cc
0:./s
1:--number-of-input=5
Note: Google Test filter = Test_Cases1*
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[ PASSED ] 0 tests.
GTest filtert die Tests, die nicht den Namen von haben Test_Cases1
, und es zeigt auch die richtigen Argumente als diejenigen, die beginnen mit gtest
.
Lösung
Google Test erkennt nur seine eigenen Befehlszeilenoptionen. Jedes Mal, wenn es eines findet, entfernt es es aus argv
und Updates argc
Dementsprechend so danach InitGoogleTest
kehrt zurück, alles übrig in argv
steht Ihnen zur Verfügung, um sich selbst zu verarbeiten. Verwenden Sie Ihre bevorzugte Befehlszeilen-Parsing-Technik, speichern Sie die Ergebnisse in einer globalen Variablen und verweisen Sie dies während Ihrer Tests.
Wenn eine Befehlszeilenoption sieht aus wie Eine Google -Testoption, aber es ist nicht so, dass das Programm seine Hilfemeldung druckt und beendet, ohne Tests auszuführen. Google -Testoptionen beginnen mit gtest_
.