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.

Bezug - So führen Sie bestimmte Testfälle in Googletest aus

War es hilfreich?

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_.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top