Я использую тестовую среду Google для модульного тестирования на С++. У меня есть несколько тестовых случаев, которые я отключил с помощью DISABLED_ перед именем теста, а некоторые тесты пропущены с помощью GTEST_SKIP(). Это работает нормально, и я вижу, что тесты отключены и пропущены в журнале терминала. Проблема в том, что я генерирую xml файл из теста.
Я использую следующую команду.
--gtest_output=xml:/data/TestReport.xml
Сгенерированный XML
<?xml version = "1.0" encoding = "UTF-8"?>
<testsuites tests = "17" failures = "7" disabled = "3" errors = "0" time = "57.713" timestamp = "1970-01-04T10:31:55" name = "AllTests">
<testsuite name = "UNITTEST" tests = "17" failures = "7" disabled = "3" errors = "0" time = "45.713" timestamp = "1970-01-04T10:32:04">
<testcase name = "Test_1" status = "run" result = "skipped" time = "0" timestamp = "1970-01-04T10:32:04" classname = "UNITTEST" />
<testcase name = "Test_2" status = "run" result = "completed" time = "0.461" timestamp = "1970-01-04T10:32:04" classname = "UNITTEST" />
<testcase name = "Test_3" status = "run" result = "completed" time = "7.089" timestamp = "1970-01-04T10:32:05" classname = "UNITTEST">
Я хотел бы отметить, что наборы тестов тегов, которые представляют собой объединение всех наборов тестов, не имеют пропущенного атрибута. Тег testsuite, который представляет собой объединение всех тестов, также не имеет пропущенного атрибута. Однако тест Test_1 действительно показывает результат как пропущенный. Есть ли какая-либо конфигурация, чтобы отображался счетчик пропущенных.
Спасибо.
Скорее всего дело в версии. Я предполагаю, что это было добавлено здесь. Тег testsuite
имеет skipped
для меня:
<?xml version = "1.0" encoding = "UTF-8"?>
<testsuites tests = "3" failures = "0" disabled = "0" errors = "0" time = "0" timestamp = "2022-05-13T17:38:54.980" name = "AllTests">
<testsuite name = "MyTestSuite" tests = "3" failures = "0" disabled = "0" skipped = "1" errors = "0" time = "0" timestamp = "2022-05-13T17:38:54.980">
<testcase name = "Test1" status = "run" result = "skipped" time = "0" timestamp = "2022-05-13T17:38:54.980" classname = "MyTestSuite">
<skipped message = "tests/gtest_demo/fib_test.cc:10
"><![CDATA[tests/gtest_demo/fib_test.cc:10
]]></skipped>
</testcase>
<testcase name = "Test2" status = "run" result = "completed" time = "0" timestamp = "2022-05-13T17:38:54.981" classname = "MyTestSuite" />
<testcase name = "Test3" status = "run" result = "completed" time = "0" timestamp = "2022-05-13T17:38:54.981" classname = "MyTestSuite" />
</testsuite>
</testsuites>
Это пример, который я запускал: https://godbolt.org/z/9aW7GrYfj
Убедитесь, что вы используете последнюю версию.
Я не думаю, что это сделано намеренно. Похоже, они добавили это для testsuite
, но пропустили для testsuites
. Я бы зарегистрировал это как ошибку на github Google Test.
Я сообщил об этом. github.com/google/googletest/issues/3836
Спасибо за ответ. Я очень ценю, что вы также добавили ссылку на PR, где она была добавлена. Однако наборы тестов тегов, которые показывают консолидацию всех наборов тестов, по-прежнему не отображают пропущенный атрибут (также в приложенном вами xml). Это ожидаемое поведение?