cmake - Cmake 中的两组测试

标签 cmake automated-tests ctest

我有两组测试(功能测试和单元测试),我希望能够指定通过 cmake 运行哪一组。

一组测试是我想通过“make test”运行的单元测试。

另一组测试是我想通过“制作功能测试”来运行的功能测试。

目前两者都是 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)

我想对这两个套件都使用 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()

现在您可以运行功能测试了:

ctest -R functional_

或者单元测试:

ctest -R unit_

如果你想创建目标以便可以通过 make 执行这些,你可以这样做:

add_custom_target(unit_tests COMMAND ${CMAKE_CTEST_COMMAND} -R unit_)
add_custom_target(functional_tests COMMAND ${CMAKE_CTEST_COMMAND} -R functional_)

然后就可以运行了:

make unit_tests
make functional_tests

您可能希望将依赖项添加到自定义命令中,以便它们在必要时重新构建您正在测试的任何可执行文件。

关于cmake - Cmake 中的两组测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28707559/

相关文章:

cmake - CTest 在子目录中添加测试

cmake - 如何在CMAKE中打包安装的文件

testing - 如何从一个文件位置获取数据并使用 tcl 代码运行

java - 有没有办法在 TestNG 中跨测试跨越依赖关系?

testing - 在 Selenium 中断言和验证

c - 如何使用带有 CTest 的检查库在 C 中进行单元测试

c++ - 如何使用 cmake 在 OSX 上编译 glfw

java - 在 Android Studio 中使用 Cmake 未定义函数引用

Cmake:从命令行获取目标的位置

c++ - CMake 和 CTest : automatically run test's dependencies