如何配置PhpStorm、Codeception和Docker以可靠地获得代码覆盖率

如何配置PhpStorm、Codeception和Docker以可靠地获得代码覆盖率,docker,docker-compose,phpstorm,code-coverage,codeception,Docker,Docker Compose,Phpstorm,Code Coverage,Codeception,我不知道如何可靠地配置项目的各个部分,以便在PhpStorm中显示代码覆盖率 我正在使用PhpStorm(EAP)、docker(19.03.5-rc1)和docker compose(1.24.1)。我用docker-compose.yml建立了我的项目,它包含一个php服务(docker imagein2code/php-dev:7.3-fpm,它包含xdebug,并且基于官方的php:7.3-fpm图像) 我用composer和所需的codeception(3.1.2)创建了一个新项目。我

我不知道如何可靠地配置项目的各个部分,以便在PhpStorm中显示代码覆盖率

我正在使用PhpStorm(EAP)、docker(
19.03.5-rc1
)和docker compose(
1.24.1
)。我用docker-compose.yml建立了我的项目,它包含一个php服务(docker image
in2code/php-dev:7.3-fpm
,它包含xdebug,并且基于官方的
php:7.3-fpm
图像) 我用composer和所需的codeception(
3.1.2
)创建了一个新项目。我运行了codeption引导程序,添加了覆盖率设置,创建了一个单元测试,并运行了覆盖率为的while测试套件。覆盖率没有出现在PhpStorm中,或者在任何地方都显示为0%。我不知道如何配置PhpStorm/Codeception来显示覆盖范围。有些项目可以这样做,但它们被配置为使用Docker映像,而不是运行Docker compose容器

我尝试了以下远程PHP解释器:

  • 远程PHP解释器->Docker->图像(
    in2code/PHP-dev:7.3-fpm
  • 远程PHP解释器->Docker->Docker为该项目构建的图像(
    cct\u PHP:latest
  • 远程PHP解释器->Docker Compose->服务PHP->Docker Compose exec
  • 远程PHP解释器->Docker编写->服务PHP->Docker编写运行
我为上面创建的每个解释器创建了一个PHP测试框架。 我为每个测试框架配置创建了Codeception运行配置。 我使用(项目默认)PHP CLI解释器和其他远程解释器的任意组合执行了所有Codeception运行配置

测试框架配置了正确的codeception路径(codeception版本由phpstorm检测),并且它将codeception.yml文件的路径作为默认配置文件。所有运行配置都使用测试框架配置中的默认配置文件

我还尝试在根codeception.yml文件中启用覆盖率,尝试了
work\u dir:/app
remote:false

这些尝试都没有生成PhpStorm中显示的代码覆盖率

使用PHP远程解释器Docker映像(Docker compose为该项目构建的映像)配置代码覆盖率有效的项目 编辑:项目的CLI解释器必须是由docker compose build构建的映像。在Codeception运行配置中设置不同的命令行解释器不会产生任何效果

docker-compose.yml

version: '3.7'

services:
  php:
    image: in2code/php-dev:7.3-fpm
    volumes:
      - ./:/app/
      - $HOME/.composer/auth.json:/tmp/composer/auth.json
      - $HOME/.composer/cache/:/tmp/composer/cache/
测试/unit.suite.yml

actor: UnitTester
modules:
    enabled:
        - Asserts
        - \App\Tests\Helper\Unit
    step_decorators: ~

coverage:
    enable: true
    remote: true
    include:
        - src/*
tests/unit/App/Controller/AirplaneControllerTest.php


不幸的是,它现在坏得不可救药: