Группировка юнит-тестов googletest по категориям

Можно ли сгруппировать тесты googletest по категориям? Например, «SlowRunning», «BugRegression» и т. Д. Самая близкая вещь, которую я нашел, — это опция —gtest_filter. Добавляя / добавляя названия категорий к именам тестов или приборов, я могу имитировать существование групп. Это не позволяет мне создавать группы, которые обычно не запускаются.

Если категории не существуют в googletest, есть ли хороший или лучший метод обхода?

Редактировать: Другой способ — использовать —gtest_also_run_disabled_tests. Добавление DISABLED_ перед тестами дает вам ровно одну условную категорию, но я чувствую, что неправильно использую DISABLED, когда делаю это.

7

Решение

Один из способов — использовать опцию gtest_filter и использовать соглашение об именах для тестов (как вы описали в вопросе).

TEST_F(Foo, SlowRunning_test1) {...}
TEST_F(Foo, BugRegression_test1) {...}
TEST_F(Foo, SlowRunningBugRegression_test1) {...}

Другой способ — использовать отдельные двоичные файлы / исполняемые файлы для любого типа теста. У этого способа есть некоторые ограничения, потому что gtest использует статическую авторегистрацию, поэтому, если вы включите некоторый исходный файл — все тесты, реализованные в этом исходном файле, будут включены в сгенерированный двоичный файл / исполняемый файл.

По моему мнению первый способ лучше. Кроме того, я бы реализовал новый тестовый макрос регистрации для облегчения моей жизни:

#define GROUP_TEST_F(GroupName, TestBase, TestName) \
#ifdef NO_GROUP_TESTS \
TEST_F(TestBase, TestName) \
#else \
TEST_F(TestBase, GroupName##_##TestName) \
#endif
5

Другие решения

Единственный способ запустить подмножество тестов в одном исполняемом файле теста — —gtest_filter. Есть два обходных пути для выполнения, скажем, интеграционных тестов и модульных тестов

  1. Используйте соглашение об именах, такое как Integration.Testname и Unit.Testname. В дополнение к этому, я бы также поддерживал файлы сценариев, такие как RunIntegration.bat и RunUnit.bat, для запуска из моих сценариев автоматизации сборки для различных сценариев.
  2. Поддерживать разные исполняемые тестовые файлы для интеграции и юнит или других категорий.
    В визуальных студиях в России будут отдельные проекты для каждого.
2

По вопросам рекламы [email protected]