如何设置具有远程代码覆盖率的代码接收?运行远程代码封面收集的步骤可能出现的问题结束

  • 我的计算机上有两个存储库
    1. 应用程序接口
    2. 测试 API 的代码接收存储库

在 API 存储库中,我添加了 codeception+c3

"require-dev": {
    "codeception/codeception": "2.*",
    "codeception/c3": "2.*",

我还在索引.php中包含了c3.php,但是当尝试用--coverage测试它时,我有这个错误

[PHPUnit_Framework_Exception] file_get_contents(http://local.api.codeception.com/c3/report/clear):fai导致开流:HTTP请求失败!HTTP/1.1 500 内部服务器错误

是否有任何使用 Codeception 进行远程代码覆盖的在线示例?


答案 1

以下是我使用 Codeception(GitHub 上的项目)进行远程代码覆盖的配置。


运行远程代码封面收集的步骤

1. 确保 xdebug 已安装并启用。

2. 配置代码接收。

文件(GitHub):codeception.yml

coverage:
  enabled: true
  c3_url: 'http://%SERVICE_HOST%/index-test.php/'
  include:
  - web/*
  - config/*
  - src/*

3. 为您需要的西装启用覆盖范围。

文件(GitHub):acceptance.suite.yml

coverage:
  remote: true

在我的示例中,它仅用于验收测试。

4. 在应用程序引导程序中包含 c3.php 文件。

应用程序引导程序文件 (GitHub):index-test.php

// Start the remote code coverage collection.
require_once __DIR__.'/../c3.php';

// autoloader, application running and etc
// ...

5. 运行覆盖率。

$ vendor/bin/codecept run --coverage --coverage-html

默认情况下,您可以在目录中找到报告。tests/_output


可能出现的问题

1. 输出目录不可写(测试/_output)。

$ chmod 777 tests/_output

2. 控制台中未打印的远程代码封存。

不应打印。从文档中:

coverage:
  remote: true

在这种情况下,如果启用了此选项,远程代码覆盖率结果将不会与本地结果合并。只有在远程文件和本地文件具有相同的路径时,才可以进行合并。但是,如果在远程服务器上运行测试,我们不确定。

3.其他一些错误。

尝试启用调试。如果启用了调试,则可以获取报表或清除报表。

curl -o codecoverage.tar "http://localhost:8080/index-test.php/c3/report/html"

结束

有时这不是一项微不足道的任务。所以我希望这会有所帮助!


答案 2

好吧,这是一个配置噩梦,但我已经修复了它

下面是示例


推荐