Codeception 的代码覆盖率收集器
Requires
- php: >=5.5.0
- composer-plugin-api: ^1.0 || ^2.0
Requires (Dev)
- composer/composer: ^1.0 || ^2.0
README
远程代码覆盖率 for Codeception
此文件 c3.php
应该包含在您正在测试的应用程序的第一行。它将启动远程代码覆盖率收集。覆盖率数据将存储到磁盘,并在测试套件完成后由 codeception
获取。此文件将以任何方式影响您的应用程序。它仅在发送特殊头 X-Codeception-CodeCoverage
时执行。或者,如果您使用 Selenium,将使用特殊的 cookie CODECEPTION_CODECOVERAGE
。在其他任何情况下,您的应用程序将像平常一样运行,没有任何开销。
本地代码覆盖率
如果您不在远程服务器上运行测试,而是使用 web 服务器(Apache、Nginx、PhpWebserver),则需要以相同的方式安装 c3.php
。在这种情况下,覆盖率结果将与本地覆盖率合并。
安装
文件 c3.php
应放在项目根目录中,与 codeception.yml
配置文件相同的目录中。同时,请确保 Codeception 在远程服务器上可用,无论是通过 phar/pear/composer 包。
通过 Composer
添加到 composer.json
"require-dev": {
"codeception/codeception": "3.*",
"codeception/c3": "2.*"
}
C3 安装程序将 c3.php
复制到项目根目录。
手动安装
wget https://raw.github.com/Codeception/c3/2.0/c3.php
设置
现在,您应该在主脚本(如 index.php
)中包含 c3.php。
示例文件: web/index.php
<?php define('C3_CODECOVERAGE_ERROR_LOG_FILE', '/path/to/c3_error.log'); //Optional (if not set the default c3 output dir will be used) include '/../c3.php'; define('MY_APP_STARTED', true); // App::start(); ?>
现在,当 Codeception 启动并启用代码覆盖率时,您将从此远程服务器收到覆盖率报告。
配置
要使用 c3.script 启用远程(和本地)代码覆盖率,您应该编辑全局配置文件 codeception.yml
或套件配置文件之一。
示例:codeception.yml
coverage: enabled: true remote: true include: - app/* exclude: - app/cache/*
该 remote
选项指定您的应用程序是否实际运行在另一台服务器上。如果您的 web 服务器在同一个节点上运行并使用相同的代码库,请禁用此选项。
预定义的路由
c3 文件不应该破坏您的应用程序,但有一些预定义的路由将由 c3 管理。Codeception 将访问这些路由以获取不同格式的收集到的覆盖率报告。
c3/report/clover
c3/report/serialized
c3/report/html
c3/report/clear
调试
如果在远程调试仍然无法启动时遇到问题,您可以尝试以下操作。编辑 c3.php
文件并删除头检查
// to remove if (!array_key_exists('HTTP_X_CODECEPTION_CODECOVERAGE', $_SERVER)) { return; }
然后在文件顶部添加此行
$_SERVER['HTTP_X_CODECEPTION_CODECOVERAGE_DEBUG'] = 1;
现在访问 http://yourhost/c3/report/clear
URL,查看是否有错误。请确保 error_reporting 设置为 E_ALL
临时目录
在项目根目录中,将在代码覆盖率期间创建 c3tmp
目录。测试和调试目的不会删除该目录。序列化数据以及 xml 和 html 覆盖率报告将存储在那里。