2010-01-20 3 views
10

Для большинства языков существует ряд модульных тестовых фреймворков, но я не сталкивался с единичным тестом для GNU make. Он имеет conditionals, циклы (оператор $ (foreach ...)) и позволяет писать довольно сложный код. Примеры могут быть такими, как порты BSD, GARNOME и OpenCSW GAR.Есть ли модульная система тестирования GNU make?

Существует также a debugger для GNU make. Тем не менее, я никогда не сталкивался с единым тестовым интерфейсом. Существует ли что-то подобное?

+0

+1 Очень интересная идея - и спасибо за ссылку на отладчик! – 2010-01-20 09:12:13

ответ

-1

make-файлы для Perl, PHP, Python, GHC и GCC (среди проектов с открытым исходным кодом, которые я мог придумать с головы до головы и лежал на моей машине), у всех есть «тестовые» цели, которые, я думаю, сделать интересное чтение.

+1

-1 Он не говорит об использовании make для проверки других вещей. Он говорит о тестировании make-файлов. – Tomas

+0

D'oh! Пропустил точку. Там * есть * некоторый код в autotools, который проверяет, является ли make разумным ... но это не равно единичной структуре тестирования. –

1

Единичные тесты обычно предполагают, что язык имеет какой-то механизм модуляции, который GNU действительно не имеет. Какими были бы «единицы», которые вы тестировали? Индивидуальные цели? Как бы вы настроили входы/выходы каждого теста?

Кроме того, поскольку make-файлы выполняются во время сборки, можно утверждать, что make-файлы «проверяют самих себя», оставляя мало места для явных «наборов тестов makefile», чтобы сделать что-то хорошее.

+0

Я полагаю, что вы могли использовать отдельные цели в качестве единиц, учитывая определенные переменные настройки. Вы также можете разделить свой код на файлы, которые будут включены в основной файл, но также включены в тестовый файл с различными настройками. – automatthias

0

Я также видел бы сборку как тест интеграции.

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

Насколько я помню, если возникла проблема со сценарием сборки, ci мгновенно выявил нас, например, потому что tar-ball не мог быть создан, или приложение не могло быть запущено из-за отсутствия артефактов.

По причинам выше, я думаю, что попытка модульного тестирования самих файлов сборки требует слишком больших усилий, которые могут быть потрачены лучше всего на настройку или расширение непрерывной интеграции.