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

Могу ли я дать лучшие имена для тестов с параметрами параметризации в gtest?

Я использую тесты с параметрами параметрирования в gtest. Например, если я пишу

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

то на выходе я вижу тестовые имена, такие как

InstantiationName/FooTest.DoesBlah/0 for "meeny"
InstantiationName/FooTest.DoesBlah/1 for "miny"
InstantiationName/FooTest.DoesBlah/2 for "moe" 

Есть ли способ сделать эти имена более значимыми? Я бы хотел увидеть

InstantiationName/FooTest.DoesBlah/meeny
InstantiationName/FooTest.DoesBlah/miny
InstantiationName/FooTest.DoesBlah/moe
4b9b3361

Ответ 2

Два способа: (http://osdir.com/ml/googletestframework/2011-09/msg00005.html)

1) Замените существующий PrettyUnitTestPrinter для печати имен тестов; что-то вроде:

--- a/gtest-1.7.0/src/gtest.cc
+++ b/gtest-1.7.0/src/gtest.cc
@@ -2774,6 +2774,7 @@ void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
 void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
   ColoredPrintf(COLOR_GREEN,  "[ RUN      ] ");
   PrintTestName(test_info.test_case_name(), test_info.name());
+  PrintFullTestCommentIfPresent(test_info);
   printf("\n");
   fflush(stdout);
 }

2) Напишите новый TestListener для печати результатов тестов, как вам нравится. (https://code.google.com/p/googletest/source/browse/trunk/samples/sample9_unittest.cc) GTest позволяет регистрировать новый тестовый прослушиватель (и деинсталлировать встроенный по умолчанию), позволяя довольно гибкую настройку тестового вывода. См. Ссылку, например, код.