matthiasnoback / behat-remote-code-coverage-extension
v0.4.1
2021-10-29 07:45 UTC
Requires
- php: >=7.0
- behat/behat: ^3.0
- behat/mink-extension: ^2.0
- matthiasnoback/live-code-coverage: ^1.0
README
此扩展可用于在运行Behat时从被Mink调用的Web服务器收集代码覆盖率数据。
要使用此扩展,在extensions
下启用它,并为需要远程代码覆盖率收集的每个测试套件设置remote_coverage_enabled
为true
。
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()
的调用
- 提供自己的逻辑以确定是否应该首先启用代码覆盖率(此示例使用环境变量)。这很重要,出于安全原因。这有助于您确保生产服务器不会暴露任何收集到的覆盖率数据。
- 提供自己的目录以存储覆盖率数据文件(
.cov
)。 - 提供您自己的
phpunit.xml(.dist)
文件的路径。该文件仅用于其代码覆盖率过滤器配置。
在测试运行后,扩展会对Web应用程序进行特殊调用(/?code_coverage_export=true&...
)。此调用的响应包含序列化的代码覆盖率数据。它将作为文件存储在target_directory
中,并以测试套件本身的名称命名,例如default.cov
。
您可以使用这些.cov
文件使用phpcov
生成漂亮的报告。
您甚至可以配置PHPUnit以在相同目录中生成.cov
文件,以便您可以在一个报告中结合PHPUnit和Behat的覆盖率数据。
要(也)在Behat测试运行期间生成(本地)代码覆盖率,请使用LocalCodeCoverageExtension
。