1

我有一个 C++ CMake 项目,我在其中使用 Google Test 进行单元测试,我对使用ctest -T Test. 现在我想实现几个运行特定应用场景并期望特定输出的集成测试,例如运行具有默认值的 C++ 可执行文件应该产生特定输出,例如以下integration_test_01.shbash 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 输出?

4

1 回答 1

4

my_algorithm使用 CMake 和 CTest,您可以通过以下方式添加测试:

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

于 2013-10-17T20:25:21.147 回答