Я новичок в Лиспе и изучаю Схему через видеоролики SICP. Одна вещь, которая, кажется, не покрыта (по крайней мере, в тот момент, когда я нахожусь), это как проводить тестирование в Лиспе.
В обычных объектно-ориентированных программах существует своего рода горизонтальное разделение задач: методы привязаны к объекту, на который они воздействуют, и для декомпозиции проблемы необходимо фрагментировать ее при построении нескольких объектов, которые могут использоваться рядом друг с другом. сторона.
В Лиспе (по крайней мере в Схеме) преобладает другой вид абстракции: для решения проблемы вы разрабатываете иерархию языков, специфичных для предметной области, каждый из которых основан на предыдущем и действует на более грубом уровне. детализации и более высокий уровень абстракции.
(Конечно, это очень грубое описание, и объекты можно использовать вертикально или даже как строительные блоки DSL.)
Мне было интересно, влияет ли это на тестирование лучших практик. Таким образом, вопрос является двойным:
- Каковы лучшие практики при тестировании в Лиспе? Являются ли модульные тесты такими же фундаментальными, как и в других языках?
- Каковы основные тестовые среды (если таковые имеются) для Лисп? Есть ли насмешливые рамки? Конечно, это будет зависеть от диалекта, но мне были бы интересны ответы для Scheme, CL, Clojure или других Lisps.