GNU make是否有单元测试框架?

10

大多数编程语言都有许多单元测试框架,但我并没有找到适用于GNU make的单元测试框架。GNU make有条件语句、循环语句($(foreach ...)语句)以及允许编写相当复杂的代码。例如,BSD ports、GARNOME和OpenCSW GAR都是一些示例。

此外,GNU make也有调试器,但我从未听说过针对它的单元测试框架。是否存在这样的框架呢?


+1 非常有趣的想法 - 谢谢提供调试器链接! - anon
顺便提一下,这里有另一个内置调试器的GNU make分支链接:http://bashdb.sourceforge.net/remake/ - Victor Sergienko
4个回答

0

单元测试通常假定语言具有某种形式的模块化机制,而GNU make实际上并没有。你将要测试的“单元”是什么?个别目标?如何设置每个测试的输入/输出?

此外,由于makefile在构建期间执行,因此可以认为makefile“自我测试”,留下很少的空间来明确地进行“makefile测试套件”。


我想你可以使用单独的目标作为单位,根据特定的变量设置。你也可以将代码拆分成文件,这些文件将被包含在主文件中,但也会被包含在测试文件中,并具有不同的设置。 - automaciej

0

我认为构建本身也可以作为集成测试。

通常情况下,构建问题会很早就出现,特别是如果您有一个工作的持续集成设置。在我们的情况下,我们定期运行所有可能的构建路径在我们的CI服务器上(软件不断构建和部署)。

据我所记得,如果构建脚本出现问题,CI会立即显示崩溃,例如由于无法构建tar-ball或由于缺少工件而无法启动应用程序。

出于以上原因,我认为尝试对构建文件本身进行单元测试涉及太多的努力,这些努力可以更好地花费在设置或扩展持续集成上。


0

-1
Perl、PHP、Python、GHC 和 GCC 的 Makefile(这些是我能想到并且在我的机器上有的开源项目)都有“test”目标,我认为这将是有趣的阅读材料。

1
他不是在谈论使用make来测试其他东西,而是在谈论测试makefiles。 - Tomas
糟糕!错过了重点。autotools 中确实有一些代码测试 make 是否正常,但这并不等于一个单元测试框架。 - Andrew McGregor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接