Подтвердить что ты не робот

Как передать параметры в gtest

Как передать параметр в мои тестовые пакеты?

gtest --number-of-input=5

У меня есть следующий основной код gtest. И --number-of-input=5 должен быть передан 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();
}

Я не знаю, как передать свой параметр в тестовые пакеты/случаи следующим образом:

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

Добавлена ​​

Я изменил основной метод, чтобы показать argv [i] после 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;
    }

Это аргументы, заданные для gtest: ./s --number-of-input=5 --gtest_filter=Test_Cases1*.

Это результаты:

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 отфильтровывает тесты, которые не имеют имени Test_Cases1, а также показывает правильные аргументы, отличные от тех, которые начинаются с gtest.

Ссылка - Как запустить определенные тестовые примеры в GoogleTest

4b9b3361

Ответ 1

Google Test распознает только собственные параметры командной строки. Каждый раз, когда он находит один, он удаляет его из argv и обновляет argc соответственно, поэтому после возврата InitGoogleTest все, что осталось в argv, доступно для вас самостоятельно. Используйте свою любимую технику синтаксического анализа командной строки, сохраните результаты в некоторой глобальной переменной и обратитесь к ней во время тестов.

Если параметры командной строки выглядят как опция Google Test, но на самом деле это не так, программа распечатает свое справочное сообщение и выйдет без каких-либо тестов. Параметры Google Test начинаются с gtest_.