首页 文章

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

提问于
浏览
6

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

What possibilities are there for remotely collecting code coverage statistics in PHP?

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

Update:

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

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

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

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

2 回答

  • 1

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

    说明在PHPUnit documentation section on Selenium中 . 搜索"append" .

  • 3

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

    我们的PHP Test Coverage Tool收集测试覆盖率数据的方式完全独立于PHPUnit(使用与否,如您所见)和/或XDebug(根本不使用XDebug) .

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

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

相关问题