2013-10-17 50 views
0

我有一個C++ CMake項目,我使用Google Test進行單元測試,並且對使用ctest -T Test生成的XML報告感到滿意。現在我想實施幾個運行特定應用程序場景的集成測試,並期望獲得特定的輸出,例如運行具有默認值的C++可執行文件應該產生一個特定的輸出,以下integration_test_01.sh的bash shell會是這樣一個測試:使用bash與CMake和CTest進行簡單的集成測試?

#!/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輸出?

回答

2

隨着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>標記中的命令的實際輸出。

+0

優秀的答案,謝謝! –