Можно ли сгруппировать тесты googletest по категориям? Например, «SlowRunning», «BugRegression» и т. Д. Самая близкая вещь, которую я нашел, — это опция —gtest_filter. Добавляя / добавляя названия категорий к именам тестов или приборов, я могу имитировать существование групп. Это не позволяет мне создавать группы, которые обычно не запускаются.
Если категории не существуют в googletest, есть ли хороший или лучший метод обхода?
Редактировать: Другой способ — использовать —gtest_also_run_disabled_tests. Добавление DISABLED_ перед тестами дает вам ровно одну условную категорию, но я чувствую, что неправильно использую DISABLED, когда делаю это.
Один из способов — использовать опцию 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
Единственный способ запустить подмножество тестов в одном исполняемом файле теста — —gtest_filter. Есть два обходных пути для выполнения, скажем, интеграционных тестов и модульных тестов