Асилив наполовину книжку Владимира Хорикова «Принципы юнит-тестирования» я что то вернулся к одной своей старой идее. Я занимаюсь разработкой всякого академического софта, и у нас юнит-тестирование делать не принято. С одной стороны проекты маленькие и без него как то можно жить, с другой его практически никто не умеет делать.


При этом документацию писать приходится, и коллеги жалуются что в моей документации мало примеров. Идея такая - раз в документации нужны примеры, то пусть эти примеры заодно играют роль тестов (всяких). Нужен doxygen наоборот, утилита которая из специально оформленной документации может выделить тесты, собрать их и запустить. Такие тесты все же лучше чем ничего.


Документация пишется разумеется в техе. Примеры оформляются в окружении verbatim, хотя можно выбрать какое то другое. В теховский документ добавляются специальные команды закомментированные для теха (начинающиеся с символа %), но влияющие на поведение утилиты тестирования.



  1. Может быть создано один или несколько файлов в которых накапливается код тестов по мере обработки теховской документации. Для создания файлов используется комбинация


%@> имена файлов через пробел 


созданные файлы могут быть активными (по умолчанию) или замороженными. Если файл активен, все что начинается с одиночного % или находится в окружении verbatim дублируется в этот файл. Для заморозки используется комбинация %@- имена файлов, для разморозки %@+ имена файлов, для закрытия файла %@. имена файлов.
Для записи отдельной строки в файл или группу файлов (вне зависимости от их состояния) используется


%@(имена файлов) какой то код 


При этом в именах файлов можно использовать вайлдкарты а-ля шелл.



  1. если в окружение verbatim встречается комбинация


выражение --> результат


оно трактуется как тест. То есть в файлах с тестами, в зависимости от расширения, будет добавлен код вычисляющий выражение и сравнивающий его с результатом.
В каждую строку теста в конец добавляется комментарий отсылающий
к исходному теховскому файлу (имя и номер строки), если тест провален то выдается сообщение указывающее на строку в теховском файле откуда тест был взят.




  1. наверное можно вводить какие то макросы что бы переиспользовать подготовительный код тестов, команды для импорта модулей которые будут раскручиваться в зависимости от расширения файла в разный код и пр.




  2. Точно нужно будет настраивать как какие тесты собирать и запускать, аналогично через какой то вариант вроде %@$ … Ну и наверное для запуска тестов можно заюзать gnu make.




  3. Отдельная история с тестированием готовых приложений (небольших), на них ведь тоже пишется документация с примерами. В общем все то же самое но для запуска shell, при этом результаты сравниваются как строки?




Как то так. Cast @bagfixer, pon4ik, thunar, Vit









 , , , ,






URL записи