Как мне вызвать параметризованный тест в GTest? - PullRequest
0 голосов
/ 29 марта 2020

Я начинаю с GTest и хочу попробовать параметризованный тест. Чтобы немного поиграть с GTest, я определил класс Foo, который определяет Foo::returnNumPlus1(const int num) { return num + 1; }.

. Я хотел бы вызвать эту функцию с перекрестным произведением двух последовательностей с помощью FooTestCombined.

Мой код:

#include "gtest/gtest.h"
#include "src/lib/foo.hpp"

namespace n
{
namespace
{

// more tests...

class FooTestCombined : public ::testing::TestWithParam<std::tuple<int, int>>
{
protected:
   Foo f1;
};

TEST_P(FooTestCombined, DoCombinedTest)
{
   int num = std::get<0>(GetParam()) * std::get<1>(GetParam());
   std::cout << "called combined with " << num << '\n';
   EXPECT_EQ(f1.returnNumPlus1(num), num + 1) << "plus one should work";
}

// calls test with values 2, 4, 6, ..., 20, 40, 60, ..., 200, ..., 1000
INSTANTIATE_TEST_SUITE_P(FirstInstatiation,
                         FooTestCombined,
                         testing::Combine(
                         testing::Range(2, 12, 2),
                         testing::Values(1, 10, 100)));

// more tests...

} // namespace
} // namespace n

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

Проблема: Тест не выполняется на ./runUnitTests.

Подсказки:

./runUnitTests --gtest_list_tests фактически перечисляет тест (ы).

Документация содержит следующий абзац:

INSTANTIATE_TEST_SUITE_P(InstantiationName,
                         FooTest,
                         testing::Values("meeny", "miny", "moe"));

ПРИМЕЧАНИЕ. Приведенный выше код должен быть размещен в глобальной области или области имен, а не в области функций.

ПРИМЕЧАНИЕ: не забудьте этот шаг! Если вы сделаете это, ваш тест пройдет в молчании, но ни один из itters в каждой итерации ios никогда не будет запускаться!

По моему мнению, я делаю обе вышеперечисленные вещи. Я не прав?

Редактирование и решение:

Это не было ошибкой в ​​коде. Запуск ./myUnitTests --gtest_shuffle показал мне все тесты в выводе. Видимо, мой двоичный файл не всегда печатает весь вывод. Это почему?

...