我有一个C++的CMake项目,我使用Google Test进行单元测试,我对使用ctest -T Test
生成的XML报告感到满意。现在我想实现几个运行特定应用程序场景的集成测试,并期望特定的输出,例如运行具有默认值的C++可执行文件应该产生特定的输出,例如以下 bash shell integration_test_01.sh
就是这样的测试:
#!/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输出?
使用 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>
标记中的命令的实际输出。