2012-06-20 2 views
3

Когда вы возитесь, например. Make, или ant, или любой другой инструмент сборки, вы на самом деле пишете код.Как можно объединить системы?

Почему нет «MUnit» или «ANTUnit» для проверки этих фрагментов кода? Имеет смысл сделать это, потому что любая ошибка в вашей системе сборки проекта вызывает огромные задержки и разочарования для людей, которые ее используют.

Пример (примечание: это, вероятно, даже не работать - не тестировалось, и это не мое внимание ни здесь):

#makefile v0 
all: main.out 

main.out: main.o x.o y.o 
    g++ $^ -o main.out 

%.o: %.cpp 
    g++ -Wall $? 

Но теперь я хочу, чтобы мои объектные файлы в отдельную папку для сборки:

#makefile v1 
all: main.out 

main.out: $(addprefix build/,main.o x.o y.o) 
    g++ $^ -o main.out 

build/%o: %.cpp 
    g++ Wall $< -o [email protected] 

О да! это работает! Фиксировать! Фиксировать!

(но ... Непрерывный сервер интеграции не имеет нет папки «сборки» еще ...)

О Noooo ... строить команды не удалось ... Я виноват ... Глупый!

Было бы здорово, чтобы быть в состоянии определить макет проекта, макет папки-структуру, а затем вызвать make all, и убедитесь, что main.out есть (и может быть запущена)

Так вот вопрос :

Какие у меня варианты «unittest» мои скрипты? Я обречен писать gazillion-shell-скрипты или что-то уже существует?

+0

Можете ли вы опубликовать пример одного из ваших файлов и четко определить отдельные единицы внутри него? –

+0

Некоторые из худших ошибок, которые я когда-либо совершал, были в сценариях Make build. Я полностью согласен с тем, что нужны лучшие инструменты тестирования вокруг Make. Я лично хотел бы, чтобы Make сделал «break» на ошибке; дайте мне подсказку, позвольте мне увидеть текущий стек, переменные и т. д .; и делать живую отладку, когда что-то идет не так. –

ответ

3

Если вы используете Ant, то есть AntUnit. Я использую его, и он работает.

Я не знаю и не могу найти единый модуль тестирования для Make. Вы можете подумать о создании своего.