unit-testing - 测试我们的 CMake 模块

标签 unit-testing testing cmake cmake-modules

我们为 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.cmakemessage 中的测试就是一个很好的例子。这些测试所做的是利用 execute_process 捕获 cmake 的输出,并将 cmake 配置步骤的输出与文件的内容进行比较预期的输出。 cmake的返回值也返回了,可以测试。

您没有指定“结果文件”是什么。有些示例比执行配置、构建和扫描一些文件以验证其中的内容更复杂。

如果将失败的配置、失败的构建、通过的配置和构建以及特定输出消息中的检查消息分开,可能会更容易。

关于unit-testing - 测试我们的 CMake 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948060/

相关文章:

PHPUnit 无法打开输入文件

unit-testing - 测试应用程序

java - jackson 的 Access.WRITE_ONLY 在测试期间为空

cmake - 未知的 CMake 命令 "CHECK_INCLUDE_FILE_CXX"

python - 在类中运行单元测试

Python:模拟我正在测试的模块正在使用的模块

c# - 使用 Effort 和 TypeName 属性进行测试

testing - 具有服务依赖性的 Ember.js 测试组件

cmake - 如何使CMake重新配置依赖于自定义文件?

c++ - 与 cmake 链接错误