PHPUnit对通过HTTP调用的代码进行代码覆盖率分析

aki*_*irk 6 phpunit code-coverage http

我正在尝试找到一种合理的方法来获取通过HTTP在测试中调用的代码的代码覆盖率报告.基本上我正在测试我自己的API,因为它应该被调用,但因为PHPUnit/Xdebug不知道在相同的代码库中执行代码.

基本上我想要实现的是使用PHPUnit Selenium扩展,但我没有运行Selenium,我通过OAuth2客户端调用代码,而OAuth2客户端又使用curl.

是否可以使用触发代码覆盖率报告的GET参数调用我的API,并让PHPUnit读取该报告并将其与其他代码覆盖率合并?有没有一个项目已经做到了或者我是否必须编写自己的PHPUnit扩展?

Ira*_*ter 1

OP 表示,问题在于基于 Xdebug 的代码覆盖率收集不会/无法收集覆盖率数据,因为 Xdebug 并未在执行代码的所有(PHP)进程中启用。

似乎只有两种方法可以解决这个问题。

1)找到一种在所有调用的进程中启用Xdebug的方法。我不知道如何做到这一点,但我希望 PHP 解释器有一些配置参数来导致这种情况。我也无法谈论是否可以将单独的基于 Xdebug 的覆盖率报告合并为一个。从表面上看,原始覆盖数据抽象地只是一组“该位置已执行”信号,因此合并应该只是一组并集。如何收集和编码这些集合可能会使问题变得更加严重。

2)找到一个不涉及Xdebug的覆盖解决方案,因此是否启用Xdebug无关紧要。我公司的(参见简介)PHP 测试覆盖率工具不使用 Xdebug,因此它可以毫无问题地收集您想要的测试覆盖率数据。您可以下载并尝试一下;有一个由 HTTP 请求准确触发的测试覆盖率收集的内置示例。该工具具有将单独的测试覆盖率运行合并为集成结果的内置功能。(我会提供一个直接链接,但有些人强烈反对这一点)。