2008-09-20 8 views
2

Недавно я начал работу над проектом персонального кодирования с использованием C++ и KDevelop. Хотя я начал с хакера, я полагаю, что в конечном итоге будет лучше, если я настрою соответствующий набор тестов для тестирования, прежде чем переходить слишком далеко. Я создал отдельный исполняемый файл тестового запуска как суб-проект, и те тесты, которые я добавил к нему, как представляется, функционируют должным образом. До сих пор успех.Как добавить пользовательский шаг сборки в проект на основе автомик в KDevelop?

Однако, я бы очень хотел, чтобы мои модульные тесты выполнялись каждый раз, когда я строю не только, когда я их явно запускаю. Это будет особенно актуально, так как я разделил беспорядок, который я внес в удобные библиотеки, каждый из которых, вероятно, будет иметь свой собственный тестовый исполняемый файл. Вместо того, чтобы запускать их вручную, я бы хотел, чтобы они запускались как последний шаг в моем процессе сборки. Я просмотрел все варианты в меню проекта и менеджере automake, но я не могу понять, как это установить.

Я предполагаю, что это возможно, возможно, путем редактирования файла makefile вручную. К сожалению, мой makefile-fu немного слаб, и я также опасаюсь, что KDevelop может перезаписать любые изменения, которые я делаю вручную, в следующий раз, когда я что-то изменил через IDE. Поэтому, если есть возможность, как это сделать через KDevelop, я бы предпочел пойти так.

Кто-нибудь знает, как я могу заставить KDevelop запускать свои тестовые исполняемые файлы как часть процесса сборки? Спасибо!

(я не 100% связаны с KDevelop. Если KDevelop не может это сделать, или же, если есть IDE, что делает это гораздо проще, я мог быть уверен, для переключения.)

ответ

3

Хотя вам может манипулировать по умолчанию `make` предназначаться для запуска тестов, это, как правило, не рекомендуется, потому что каждый вызов

make

будет запускать все тесты. Вместо этого вы должны использовать цель «check», , которая является принятым квазистандартом среди программных пакетов. Делая это, тесты запускаются только при запуске

make check

Вы можете легко настроить KDevelop запустить «сделать чек», вместо того, чтобы просто «сделать».

Поскольку вы используете Automake (через KDevelop), вам не нужно писать «проверить» целевой себя. Вместо этого, просто отредактировать `Makefile.am` и установить некоторые переменные:

 
TESTS = ... 

Пожалуйста, посмотрите на automake documentation, "Support for test suites" для получения дополнительной информации.

0

Я получил это работает так:

$ cat src/base64.c 
//code to be tested 
int encode64(...) { ... } 

#ifdef UNITTEST 
#include <assert.h> 
int main(int argc, char* argv[]) 
{ 
    assert(encode64(...) == 0); 
    return 0; 
} 
#endif //UNITTEST 
/* end file.c */ 

$ cat src/Makefile.am 
... 
check_PROGRAMS = base64-test 
base64_test_SOURCES = base64.c 
base64_test_CPPFLAGS = -I../include -DUNITTEST 
TESTS = base64-test 

делают чек построит Src/base64-тест и запустить его:

$ make check 
... 
PASS: base64-test 
================== 
All 1 tests passed 
================== 
... 

Теперь я пытаюсь инкапсулировать все в качестве макроса m4, который должен использоваться следующим образом:

MAKE_UNITTEST(base64.c) 

, который должен производить что-то как решение выше.

Надеюсь, это поможет.