Я написал программу / библиотеку, которую использовал для получения результатов в статье. (Вот и все , но мой вопрос общий.) У меня есть тесты, которые я регулярно использую ctest
(для запуска требуется несколько минут). Чтобы воспроизвести некоторые таблицы или рисунки в статье, мне нужно создать скрипт или простую программу-драйвер, которая будет работать, может быть, 10 минут, иногда больше, поэтому я не хочу иметь эту часть обычного набора тестов. В то же время я хочу убедиться, что результаты статьи могут быть:
- воспроизведено позже
- убедитесь, что они продолжают давать те же / правильные результаты после того, как я продолжу разработку библиотеки
В настоящее время я пытаюсь использовать небольшую драйверную программу, которая запускается как часть обычного набора тестов, и если я хочу воспроизвести результаты из этой статьи, я раскомментирую некоторые строки там. Конечно, я никогда не знаю, какие именно линии и нужно ли настраивать некоторые другие параметры, чтобы получить точно такие же результаты, как в статье.
Я также попытался использовать скрипт Python, который вычисляет точные цифры / таблицы из статьи. Такой скрипт обычно перестает работать после обновления библиотеки, потому что он не запускается на регулярной основе (занимает слишком много времени).
Лучший способ, который мне пришёл в голову, это иметь пример на Fortran (или C / C ++), который будет регулярно компилироваться (как часть библиотеки), но не запускаться в обычном тестовом наборе. Таким образом, по крайней мере, я знаю, что он компилируется нормально (и, следовательно, надеюсь, что также работает). И я протестирую несколько простых (меньших) примеров в рамках обычного набора тестов.
Каковы оптимальные способы решения этой проблемы?
источник
Ответы:
В deal.II у нас есть набор тестов, управляемый обычным Unix Makefile. У него есть цель по умолчанию, которая запускает все обычные тесты, и отдельная цель для дорогих тестов. Запуск каждого теста выполняется с использованием общего правила, но цель по умолчанию вызывает общее правило только для определенных тестов, а дорогая цель вызывает его для дорогих тестов. Поскольку все это делается с использованием общего правила, оно должно быть актуальным в любой момент времени; Устаревшими могут быть только списки названий тестов.
Обновление: вышеприведенный текст был верным в 2012 году. Начиная с 2014 года, тестовый пакет сделка II основана на CTest, но общая идея остается в силе.
источник
p4est
?