Как можно объединить тестовые фильтры в рамках модульного тестирования Google Test? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть несколько блок-тестов, которые я написал с помощью каркаса Google Test:

  1. Класс теста:

    class Test: public testing::Test
    {
    public:
      virtual void SetUp() {}
      virtual void TearDown() {}
    };
    
  2. Фактические тесты:

    TEST_F(Test, SubTest1)
    {
      // execute Test logic
    }
    
    TEST_F(Test, SubTest2)
    {
      // execute Test logic
    }
    
    TEST_F(Test, SubTest3)
    {
      // execute Test logic
    }
    

Предполагается, что я хочу отображать только SubTest1 и SubTest3, что мне делать?Важно то, что я хочу видеть в центральном месте (основной метод), какие тесты фактически выполняются.

Я думал, что я могу «сложить» фильтры, как в следующем примере, но этоПодход не сработал:

int main(int argc, char** argv)
{
  ::testing::InitGoogleMock(&argc, argv);

  ::testing::GTEST_FLAG(filter) = "Test.SubTest1";
  ::testing::GTEST_FLAG(filter) = "Test.SubTest3";
  return RUN_ALL_TESTS();
}

→ Второй фильтр убрал первый и выполняется только SubTest3.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете отключить тесты, которые вы не хотите запускать с префиксом DISABLED_ ( см. Документацию ):

TEST_F(Test, DISABLED_SubTest2)
{
  // execute Test logic
}

Тест будет скомпилирован, но GoogleTest не будетзапустить его.

GoogleTest предоставляет хорошую информацию после завершения тестов, сколько из них было отключено.

Вы также можете временно включить их с флагом --gtest_also_run_disabled_tests.

0 голосов
/ 19 сентября 2018

Я попытался найти официальную ссылку googletest, но нашел только эту статью , объясняющую синтаксис фильтров googletest.Если вы хотите запустить тестовые сценарии, соответствующие одному из 2 различных шаблонов, ваш фильтр должен выглядеть следующим образом:

"FIRST_PATTERN:SECOND_PATTERN"

Итак, в вашем случае:

  ::testing::GTEST_FLAG(filter) = "Test.SubTest1:Test.SubTest3";

Вы также можете использовать wilcards ? и *, и вы можете добавить шаблоны исключения после знака -.

...