PHPUnit:智能模板的代码覆盖率

时间:2011-09-08 14:56:39

标签: php phpunit smarty code-coverage

使用PHPUnit运行测试,我很乐意为我的Smarty模板提供代码覆盖率指标。

不幸的是,这不是开箱即用的,因为Smarty将模板编译成.php个文件,因此模板本身没有覆盖信息。查看已编译的.php文件覆盖率并不好,因为编译的文件几乎不可读。

如何使用覆盖率信息注释原始模板代码?

我想要一个与PHPUnit's PHP_CodeCoverage集成的工具,因为我可以在其生成的HTML文件中看到覆盖范围。但任何其他解决方案也足够了:))

1 个答案:

答案 0 :(得分:3)

从本质上讲,您使用的是没有覆盖工具的“新”编程语言(模板)。您已经观察到您需要模板上的覆盖数据,是的,必须通过已编译的PHP文件,以便您可以运行/测试并获取覆盖数据。

我不知道临时解决方案,但是这里概述了任何语言的一般解决方案:

Branch Coverage for Arbitrary Languages Made Easy

我的公司根据这个想法构建family of test coverage tools。这些工具可以互操作;如果您从Java的混合系统(使用JNI启用的调用)C代码收集测试覆盖率数据,使用Java和C测试覆盖率工具,他们可以合理地同时显示Java和C代码的覆盖范围提供覆盖数据统计。

此系列中已有PHP测试覆盖率工具。如果有一个Smarty-coverage工具,它的输出可以直接与PHP的覆盖范围相结合,以便同时覆盖PHP和Smarty模板。