使用 bash 与 CMake 和 CTest 进行简单的集成测试



我有一个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> 标记中的命令的实际输出。

相关内容

  • 没有找到相关文章

最新更新