我们为 CMake 创建了多个附加功能。它们变得相当多,我们需要对它们进行(单元)测试。
有一些简单的,只有可 rebase 数,例如:
function(join_list LIST GLUE)
这些可以使用检查结果的自定义 CMake 脚本进行测试。 为此我们还写了一套assert-macros。
当函数是基于目标的时,这会变得更难:
function(target_my_custom_property_set TARGET VALUE)
我们需要一个多个需要配置的 CMakeLists.txt 文件。配置必须成功或失败并显示指定消息。还必须检查结果文件。
我想知道,有没有更简单的方法?有现成的框架吗? Kitware 如何测试已交付的模块?
最佳答案
ctest
是运行各种测试的框架。 许多 cmake
测试作为 CMake Testing Process 的一部分运行.这些测试是 Tests 中源代码的一部分。文件夹,并且是 CMakeLists.txt
的一部分。
您要查看的特定测试位于 RunCMake
文件夹中。这些测试使用 RunCMake.cmake
。 message
中的测试就是一个很好的例子。这些测试所做的是利用 execute_process
捕获 cmake
的输出,并将 cmake
配置步骤的输出与文件的内容进行比较预期的输出。 cmake
的返回值也返回了,可以测试。
您没有指定“结果文件”是什么。有些示例比执行配置、构建和扫描一些文件以验证其中的内容更复杂。
如果将失败的配置、失败的构建、通过的配置和构建以及特定输出消息中的检查消息分开,可能会更容易。
关于unit-testing - 测试我们的 CMake 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948060/