Фильтрация тестов `catch` по меткам при запуске с` ctest`

674
Kyle Strand

В настоящее время я использую ctestдля запуска тестов, написанных с помощью платформы Catch . Я хотел бы иметь возможность фильтровать, какие тесты я запускаю, основываясь на внутренних тегах Catch; например, я хотел бы легко предотвратить [FUTURE]запуск любых тестов с тегами .

Для одного исполняемого файла теста, игнорируя ctest, это просто:

myTestName '~[FUTURE]' 

Но я не вижу способа передать '~[FUTURE]'аргумент в тесты Catch ctest. Это должно быть возможно --test-command, но (1) --test-command, кажется, ничего не делает без --build-and-test(это не то, что я хочу) и (2) это, очевидно, работает только для одного теста за раз, что тоже не то, что я хочу (я просто хочу запустить ctestвесь мой проект).

Я мог бы просто использовать ctest -Nдля запуска имена тестов, а затем сам запускать тесты, но я не знаю, как получить путь к файлу теста, ctestпоэтому мне придется запускать findвсе имена тестов, и в этот момент я в основном реализую свой собственный тестовый бегун.

PS Нет существующих тегов для ctestили Catch test framework, и у меня нет представителя для их создания. Я не совсем уверен, какие другие теги будут применяться здесь. Я использую только cmakeтег, потому что ctestявляется частью cmake.

3
Вы когда-нибудь понимали это? jorgeh 8 лет назад 1
@jorgeh Нет, не знаю. Это выглядит как довольно вопиющее упущение в `ctest` .... Kyle Strand 8 лет назад 1
Мне нужно что-то вроде этого, так что вот моя текущая смутная идея: вы можете объявить каждый тест для ctest дважды, один раз с `~ [FUTURE]` в качестве my-test-name и один раз без my-test-name-future. Затем вы можете отфильтровать их с помощью регулярного выражения ctest. В качестве альтернативы вы можете добавить метку ctest к будущим и использовать фильтрацию меток ctest для запуска правильных (может быть немного более надежным, чем регулярное выражение имени). Вы можете использовать функцию обертки cmake для регистрации теста, чтобы убедиться, что это было сделано последовательно. dshepherd 6 лет назад 0

0 ответов на вопрос

Похожие вопросы