在PHP中收集远程代码覆盖率

时间:2011-11-24 08:59:50

标签: php phpunit integration-testing code-coverage

在我们的项目中,我们正在运行使用PHPUnitSeleniumCurl测试来打开不同开发服务器上的页面。服务器B有一个运行服务网站的Apache服务器。服务器A通过将项目文件同步(Rsync)到开发服务器B来启动测试作业,因此两个服务器上的项目文件是相同的。

在PHP中远程收集代码覆盖率统计信息有哪些可能性?

我们已经在使用Xdebug来收集在服务器A上本地运行的单元测试的代码覆盖率(PHPunit直接使用项目文件,因此可以start/stop collecting code coverage report

更新

在服务器B上,该网站由Apache运行的PHP实例呈现。当使用Selenium / Curl对服务器A上的PHP实例进行测试时,使用命令行版本。该实例无法分析Apache在服务器B上运行的PHP实例。

当运行单元测试(不使用其他服务器而不使用Selenium / Curl)时,我们使用如下命令:

phpunit --coverage-html ./results/codecoverage/ ATestFile.php

这将通过在PHP Cli中使用Xdebug为“ATestFile.php”生成测试的代码覆盖率报告。

2 个答案:

答案 0 :(得分:3)

Github上的PHPUnit-Selenium项目有一个解决方案,我相信PHPUnit 3.5中内置的旧版本具有相同的功能。 PHPUnit_Extension_Selenium_TestCase folder中有一些文件用于捕获服务器B上的代码覆盖率信息。您需要设置Apache以预先添加和附加两个PHP脚本 - 恰当地命名为prepend.phpappend.php - 每个请求。

说明在PHPUnit documentation section on Selenium中。搜索“追加”。

答案 1 :(得分:1)

OP要求提供可以从服务器B生成报告的替代方案。

我们的PHP Test Coverage Tool收集测试覆盖率数据的方式完全独立于PHPUnit(根据需要使用或不使用)和/或XDebug(根本不使用XDebug)。

这意味着您可以通过您认为有用的任何方法(包括来自服务器A的外部请求)来练习您的代码,并获取代码覆盖率数据。

您可以随时要求提供涵盖代码的快照。此测试覆盖率工具的显示引擎将该快照转换为覆盖在源代码上的覆盖范围的可见显示,和/或生成摘要报告。