Codeception 的代码覆盖率收集器

安装量: 3,991,655

依赖者: 80

建议者: 0

安全性: 0

星标: 72

关注者: 12

分支: 46

公开问题: 9

类型:composer-plugin

2.9.0 2023-10-15 17:57 UTC

README

问题 | 使用指南

远程代码覆盖率 for Codeception Build Status

此文件 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 覆盖率报告将存储在那里。