С помощью Google Test 1.6 (Windows 7, Visual Studio C ++). Как я могу отключить данный тест? (как я могу предотвратить запуск теста). Могу ли я еще что-нибудь сделать, кроме как прокомментировать весь тест?
googletest
пользователь
источник
источник
Вы также можете запустить подмножество тестов , согласно документации:
Выполнение подмножества тестов
Не самое красивое решение, но оно работает.
источник
Теперь вы можете использовать
GTEST_SKIP()
макрос для условного пропуска теста во время выполнения. Например:Обратите внимание, что это новая функция, поэтому вам может потребоваться обновить библиотеку GoogleTest, чтобы использовать ее.
источник
GTEST_SKIP()
доступно с 1.10.0.GTEST_SKIP_("some message")
(обратите внимание на нижнее подчеркивание)Вот выражение для включения тестов, имена которых содержат строки foo1 или foo2, и исключения тестов, в именах которых есть строки bar1 или bar2:
источник
Я предпочитаю делать это в коде:
Я могу либо закомментировать обе строки, чтобы запустить все тесты, либо раскомментировать первую строку, чтобы проверить одну функцию, которую я исследую / над которой я работаю, либо раскомментировать вторую строку, если тест не работает, но я хочу протестировать все остальное.
Вы также можете протестировать / исключить набор функций, используя подстановочные знаки и написав список «MyLibrary.TestNetwork *» или «-MyLibrary.TestFileSystem *».
источник
export GTEST_FILTER='*'
.*
«не». Вместо этого я просто использую другую переменную среды, которая отменяет фильтр.Если требуется более одного теста, пропустите
источник
При другом подходе вы можете заключить свои тесты в функцию и использовать обычные условные проверки во время выполнения, чтобы выполнять их только при желании.
Это полезно для меня, так как я пытаюсь запустить некоторые тесты только в том случае, если система поддерживает IPv6 с двойным стеком.
Технически этот материал с двойным стеком не должен быть модульным тестом, поскольку он зависит от системы. Но я не могу проводить какие-либо интеграционные тесты, пока не проверил, что они все равно работают, и это гарантирует, что он не будет сообщать о сбоях, если это не ошибка кода.
Что касается его проверки, у меня есть объекты-заглушки, которые имитируют поддержку системой двойного стека (или ее отсутствие) путем создания поддельных сокетов.
Единственным недостатком является то, что результаты теста и количество тестов изменятся, что может вызвать проблемы с чем-то, что отслеживает количество успешных тестов.
Вы также можете использовать ASSERT_ * вместо EQUAL_ *. Assert will об остальной части теста, если он не прошел. Предотвращает сброс на консоль большого количества избыточного материала.
источник
У меня была такая же потребность в условных тестах, и я нашел хорошее обходное решение. Я определил макрос TEST_C, который работает как макрос TEST_F, но у него есть третий параметр, который представляет собой логическое выражение, оцениваемое во время выполнения в main.cpp ДО запуска тестов. Тесты, оценивающие ложь, не выполняются. Макрос некрасивый, но выглядит так:
Кроме того, в вашем main.cpp вам понадобится этот цикл, чтобы исключить тесты, которые оценивают false:
источник