web-dev-qa-db-fra.com

Comment passer des paramètres au gtest

Comment puis-je transmettre des paramètres à mes suites de tests?

gtest --number-of-input=5

J'ai le code gtest principal suivant. Et --number-of-input=5 Devrait être transmis à InitGoogleTest ().

#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();
}

Je ne sais pas comment passer mon paramètre aux suites/cas de test comme suit?

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);
}

Ajoutée

J'ai modifié la méthode principale pour afficher l'argv [i] après 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;
    }

Voici les arguments donnés au gtest: ./s --number-of-input=5 --gtest_filter=Test_Cases1*.

Voici les résultats:

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 filtre les tests qui n'ont pas le nom de Test_Cases1 et affiche également les arguments corrects autres que ceux commençant par gtest.

Référence - Comment exécuter des cas de test spécifiques dans GoogleTest

34
prosseek

Google Test ne reconnaît que ses propres options de ligne de commande. Chaque fois qu'il en trouve un, il le supprime de argv et met à jour argc en conséquence, donc après le retour de InitGoogleTest, tout ce qui reste dans argv est disponible pour vous pour vous traiter. Utilisez votre technique d'analyse de ligne de commande préférée, stockez les résultats dans une variable globale et faites-y référence pendant vos tests.

Si une option de ligne de commande ressemble à une option de test Google mais ne l'est vraiment pas, le programme affichera son message d'aide et quittera sans exécuter de test. Les options de test Google commencent par gtest_.

45
Rob Kennedy