cru*_*vid 1 automated-tests cmake ctest
我有两组测试(功能和单元测试),我希望能够指定通过cmake运行的集合.
一组测试是我想通过"make test"运行的单元测试.
另一组测试是我想通过"make functionaltests"运行的功能测试.
目前两者都是ctest的一部分,因为我通过add_test运行两个套件.我的CMakeLists.txt文件是这样的:
FOREACH(functional_test ${functional_tests})
ADD_TEST(NAME functional_test COMMAND f_test.sh functional_test)
ENDFOREACH(functional_test)
FOREACH(unit_test ${unit_tests})
ADD_TEST(NAME unit_test COMMAND u_test.sh unit_test)
ENDFOREACH(unit_test)
Run Code Online (Sandbox Code Playgroud)
我想为两个套件利用ctest,因为它为我提供了一个漂亮的,可读的测试套件格式(测试通过,哪些测试失败).
我宁愿不必创建自定义可执行文件,为它创建一个名为functionaltests的目标,并尝试模仿ctest如何打印出测试结果.
运行ctest时,可以给它一个正则表达式来选择要运行的测试.因此,您可以根据支持此模式的模式在CMakeLists文件中命名测试:
set(functional_tests "test1" "test2" "test3")
set(unit_tests "test1" "test2" "test3")
FOREACH(test ${functional_tests})
ADD_TEST(NAME functional_${test} COMMAND f_test.sh ${test})
ENDFOREACH()
FOREACH(test ${unit_tests})
ADD_TEST(NAME unit_${test} COMMAND u_test.sh ${test})
ENDFOREACH()
Run Code Online (Sandbox Code Playgroud)
现在您可以运行功能测试:
ctest -R functional_
Run Code Online (Sandbox Code Playgroud)
或单元测试:
ctest -R unit_
Run Code Online (Sandbox Code Playgroud)
如果要创建目标以便可以通过make执行这些目标,则可以执行以下操作:
add_custom_target(unit_tests COMMAND ${CMAKE_CTEST_COMMAND} -R unit_)
add_custom_target(functional_tests COMMAND ${CMAKE_CTEST_COMMAND} -R functional_)
Run Code Online (Sandbox Code Playgroud)
然后你可以运行:
make unit_tests
make functional_tests
Run Code Online (Sandbox Code Playgroud)
您可能希望向自定义命令添加依赖项,以便它们在必要时导致您正在测试的任何可执行文件重建.
归档时间: |
|
查看次数: |
303 次 |
最近记录: |