matthiasnoback/behat-remote-code-coverage-extension

v0.4.1 2021-10-29 07:45 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:35 UTC


README

此扩展可用于在运行Behat时从被Mink调用的Web服务器收集代码覆盖率数据。

要使用此扩展,在extensions下启用它,并为需要远程代码覆盖率收集的每个测试套件设置remote_coverage_enabledtrue

default:
    extensions:
        BehatRemoteCodeCoverage\RemoteCodeCoverageExtension:
            target_directory: '%paths.base%/var/coverage'
    suites:
        default:
            remote_coverage_enabled: true

现在修改您的Web应用程序的前端控制器,使其看起来像这样

use LiveCodeCoverage\RemoteCodeCoverage;

$shutDownCodeCoverage = RemoteCodeCoverage::bootstrap(
    (bool)getenv('CODE_COVERAGE_ENABLED'),
    sys_get_temp_dir(),
    __DIR__ . '/../phpunit.xml.dist'
);

// Run your web application now...

// This will save and store collected coverage data:
$shutDownCodeCoverage();

如果需要,请修改对RemoteCodeCoverage::bootstrap()的调用

  1. 提供自己的逻辑以确定是否应该首先启用代码覆盖率(此示例使用环境变量)。这很重要,出于安全原因。这有助于您确保生产服务器不会暴露任何收集到的覆盖率数据。
  2. 提供自己的目录以存储覆盖率数据文件(.cov)。
  3. 提供您自己的phpunit.xml(.dist)文件的路径。该文件仅用于其代码覆盖率过滤器配置

在测试运行后,扩展会对Web应用程序进行特殊调用(/?code_coverage_export=true&...)。此调用的响应包含序列化的代码覆盖率数据。它将作为文件存储在target_directory中,并以测试套件本身的名称命名,例如default.cov

您可以使用这些.cov文件使用phpcov生成漂亮的报告。

您甚至可以配置PHPUnit以在相同目录中生成.cov文件,以便您可以在一个报告中结合PHPUnit和Behat的覆盖率数据。

要(也)在Behat测试运行期间生成(本地)代码覆盖率,请使用LocalCodeCoverageExtension