Как добавить предварительную проверку в тестовом наборе googletest? - PullRequest
1 голос
/ 12 января 2020

У меня есть набор тестов с несколькими модульными тестами, и все эти модульные тесты ожидают указанного c рабочего каталога, поскольку они используют относительный путь для загрузки некоторых тестовых данных. Если исполняемый файл модульного теста выполняется из какого-то неправильного каталога, все эти модульные тесты не пройдены.

Как правильно выполнить эту проверку в gtest? Желательно, чтобы я получал одно сообщение об ошибке вместо 50 неудачных модульных тестов с одним и тем же сообщением.

Один из способов - использовать прибор и выполнять однократную проверку, но в этом случае я все равно получаю все эти 50 единиц. неудачные тесты вместо пропуска остальной части набора тестов

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Googletest имеет встроенную функцию фильтрации. При условии, что все ваши тесты имеют общую часть имени (например, они находятся в одном приборе), вы можете отключить их при запуске тестов:

./foo_test --gtest_filter=-PathDependentTests.*

или установив переменную окружения GTEST_FILTER в одну и ту же строку

GoogleTest 1,8 документа
Googletest Master Docs

Если вам все еще нужен сбой, но только один вместо пятидесяти, то это, вероятно, не лучший механизм к сожалению.

0 голосов
/ 13 января 2020

В последнем выпуске v.1.10.0 gtest предоставляет новый макрос GTEST_SKIP () (ура !!).

Его можно использовать следующим образом :

TEST(SkipTest, DoesSkip)
{
  if (my_condition_to_skip)
    GTEST_SKIP();

  // ...
}

Насколько я знаю, документации по этому вопросу пока нет, за исключением модульного теста функции.

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

[----------] 2 tests from Fixture
[ RUN      ] Fixture.DoesSkip
[  SKIPPED ] Fixture.DoesSkip (1 ms)
[ RUN      ] Fixture.DoesSkip2
[  SKIPPED ] Fixture.DoesSkip2 (0 ms)
[----------] 2 tests from Fixture (12 ms total)
...