Стандартная команда 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 - на самом деле он предназначен для временного отключения тестов, в то время как вы реорганизуете что угодно, чтобы тест снова проходил. Это лучше, чем просто комментировать тест, так как он продолжает его компилировать, и дает неприятное напоминание после запуска пакета, что вы отключили тесты.

Другие вопросы по тегам