2016-11-25 3 views
-1

Я тестирую приложение C/C++. Для большинства методов я смог написать модульные тесты с использованием CppUTest. Но есть несколько, для которых нет, и я хочу написать тесты интеграции/завершения в конец, чтобы проверить эти методы. То, что я хочу, чтобы проверить, является ли генерируетсяОснование для завершения тестирования для приложения C++

  • правильный выходной файл

  • для invalud аргументов сообщения собственно об ошибках печатаются (это инструмент командной строки)

  • отображает правильные выходные messgaes

Мой вопрос в том, есть ли инструменты для этого, или я должен написать некоторые сценарии для i nvoke мое приложение, захват вывода и т. д.? Если да, как начать эти скрипты? Вызывать их из CppUtest?

+0

@ close- and downvoters: «Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить». Кажется, я описал это. Вместо этого я не хочу получать конкретную рекомендацию по программному обеспечению - не имея опыта - мне любопытно, что делают другие в такой ситуации. – robert

ответ

1

Я знаю несколько способов, чтобы проверить правильность вывода:

Если вы используете CMake и CTest, вы можете использовать CTest сравнить вывод вашей программы с ожидаемым выходом. Работает только с текстовым выходом (как обычно, на экране), и не будет работать, если вы выведете случайные числа времени/даты и т. Д. Ищите add_test_output_check() в мануале CMake.

Если ваша программа не записывает жестко закодированную в stdout, то вы можете передать std :: ostringstream и затем проверить содержимое строки, используя вашу предпочтительную модульную тестовую структуру.

И наконец, вы можете использовать dup2() для определения других дескрипторов файлов для stdout и stderr, выполнить тест и в конце проверить содержимое файлов.

Для выходного файла, я думаю, вам нужно создать ссылочный выходной файл, а затем сравнить содержимое этого файла с файлом, который был сгенерирован тестом: написать тестовую функцию, которая загружает оба файла и делает memcmp () по данным.

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