Стандартная команда CMake и CTest "test" пропускает тест со специальным именем
Я использую CTest с CMake для запуска некоторых тестов. Я использую enable_testing()
команда, которая предоставляет мне команду по умолчанию для make test
, Все тесты в моем подкаталоге учитываются (выполняя add_test
команда) и make test
прекрасно работает, кроме одной проблемы.
Есть определенный тест, который я назвал skip_test
, что я не хочу, чтобы меня убегали make test
, Я хотел бы добавить пользовательскую цель, чтобы я мог запустить make skip_test
и он запустит этот тест.
Я могу сделать это, делая add_custom_target(skip_test ...)
и предоставление CTest с -R
отметьте и найдите файлы, содержащие в своем имени "skip_test". Это также, кажется, работает. Моя проблема сейчас: как я могу получить make test
команда игнорировать skip_test
?
Если я попробую закомментировать enable_testing
и добавив свой собственный add_custom_target(test ....)
Я получаю "Тесты не найдены!!!" сейчас либо make test
или же make skip_test
, Я также попытался сделать Custom CTest файл и добавить set(CTEST_CUSTOM_TESTS_IGNORE skip_test)
, Это сработало так, что сейчас make test
игнорируется "skip_test", но теперь работает make skip_test
отвечает "тестов не найдено!!!"
Мы ценим любые предложения!
2 ответа
Я на самом деле использовал другое решение. Вот что я сделал. Для тестов, которые я хотел исключить, я использовал следующую команду при их добавлении:
"add_test (..... CONFIGURATIONS ignore_flag)", где ignore_flag - это любая фраза, которую вы хотите. Затем, в моем CMakeLists.txt, когда я определяю собственную цель add_custom_target( ignore_tests ...), я даю ей ctest .... -C ignore_flag
Теперь сделайте тест БУДЕТ пропустить эти тесты! make ignore_Tests будет запускать игнорируемые тесты + игнорируемые тесты, с которыми я в порядке.
Я не уверен, что можно сделать это полностью с помощью CTest, но, поскольку вы пометили этот вопрос как "googletest", я предполагаю, что вы используете его в качестве тестовой среды. Таким образом, вы можете использовать способность Gtest отключать тесты, а также запускать отключенные тесты.
Изменяя тест (ы), о которых идет речь, чтобы получить ведущий DISABLED_
их имена не будут запускаться по умолчанию, когда вы make test
,
Затем вы можете добавить свою собственную цель, которая будет вызывать ваш тестовый исполняемый файл с соответствующими флагами Gtest для запуска только отключенных тестов:
add_custom_target(skip_test
MyTestBinary --gtest_filter=*DISABLED_* --gtest_also_run_disabled_tests VERBATIM)
Это немного злоупотребляет функциональностью Gtest - на самом деле он предназначен для временного отключения тестов, в то время как вы реорганизуете что угодно, чтобы тест снова проходил. Это лучше, чем просто комментировать тест, так как он продолжает его компилировать, и дает неприятное напоминание после запуска пакета, что вы отключили тесты.