2013-10-11 3 views
2

В C или C++, если у меня есть программа со следующей структурой:C блок функции тестирования

..includes.. 
..defines.. 

void function_one(int i) { 
    ... 
} 

void function_two(const char * str) { 
    ... 
} 

int main(int argc, char *argv[]) { 
    ... 
} 

Сохраненный в main.c/cpp.

Как написать новый файл test.c/cpp, где я могу звонить на функции в main.c/cpp?

Как я делаю это сейчас:

Компилятор флаг: -etest_main
Файлы для компиляции: main.c test.c
Запуск результаты теста: Blank no errors

Мой тест основные отпечатки «здесь», но им не уверен, почему тестовый исполняемый файл isnt.

+0

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

ответ

5

Посмотрите на CUnit, так что вам не нужно изобретать велосипед. И вот их Intro для Devs doc.

Это часть серии тестовых рамок xUnit и существует уже много лет.

+0

Как это могло бы решить проблему вопросов, имеющих функции, которые будут тестироваться в блоке рядом с основной функцией? – villekulla

0

Вы не можете легко проверить функции, которые находятся в одном и том же компиляторе, как функция main.

Возможные решения:

Сплит ваши main.{c/cpp} в два файлы исходного кода (компиляции единиц). Один файл должен содержать только функцию main, а другой - все остальные функции. При проведении модульных тестов просто не связывайтесь в компиляторе, содержащем одну основную функцию.

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

+1

Или используйте параметр точки входа загрузчика, чтобы начать с некоторой записи, отличной от «основной». Это делает «основную» просто еще одну функцию. – mpez0

+0

@ mpez0 Смотрите http://stackoverflow.com/a/3379260/2824853, что это может привести к другим проблемам ... – villekulla

Смежные вопросы