Простое интеграционное тестирование с использованием bash с CMake и CTest?
У меня есть проект C++ CMake, где я использую Google Test для модульного тестирования, и я доволен отчетами XML, созданными с использованием ctest -T Test
, Теперь я хотел бы реализовать пару интеграционных тестов, которые запускают конкретные сценарии приложения и ожидают определенного вывода, например, запуск исполняемого файла C++ со значениями по умолчанию должен давать конкретный вывод, например, следующее integration_test_01.sh
bash shell будет таким тестом:
#!/bin/bash
./my_algorithm > out && grep "mse\=1\.2345e\-6" out
if [ $? == 0 ]; then
echo "integration test succeeded"
else
echo "integration test failed" >&2
fi
rm out | cat
Есть ли способ интегрировать такой тест с CMake или CTest и, возможно, даже получить какой-нибудь вывод XML?
1 ответ
С CMake и CTest вы можете добавить тест для my_algorithm
следующим образом:
add_executable(my_algorithm ...)
add_test(NAME integration_test_01 COMMAND my_algorithm)
set_tests_properties(integration_test_01
PROPERTIES PASS_REGULAR_EXPRESSION "mse\\=1\\.2345e\\-6")
Вывод команды my_algorithm
будет проверен по указанному регулярному выражению, и если результат не совпадает, тест не пройден.
Когда вы запускаете тесты с ctest -T Test
сгенерированный отчет XML будет содержать фактический вывод команды, вложенной в <Measurement>
тег.