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

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

我正在使用PhpStorm(EAP),docker(19.03.5-rc1)和docker-compose(1.24.1)。我使用包含php服务的docker-compose.yml设置了我的项目(Docker镜像in2code/php-dev:7.3-fpm包含xdebug并基于官方php:7.3-fpm镜像) 我使用作曲家和必需的代码接收(3.1.2)创建了一个新项目。我运行了codecption引导程序,添加了coverage设置,创建了单元测试,并运行了带有coverage的while测试套件。该覆盖率未出现在PhpStorm中,或在任何地方都显示0%。我不知道如何配置PhpStorm / Codeception来显示覆盖范围。在某些项目中,此方法有效,但是它们被配置为使用Docker映像而不是运行中的docker-compose容器。

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

  • 远程PHP解释器-> Docker->图像(in2code/php-dev:7.3-fpm
  • 远程PHP解释器-> Docker->由docker-compose为此项目(cct_php:latest)构建的映像
  • 远程PHP解释器-> Docker Compose->服务php-> docker-compose exec
  • 远程PHP解释器-> Docker Compose->服务php-> docker-compose运行

我为上面创建的每个解释器创建了一个PHP测试框架。 我为每个测试框架配置创建了Codeception运行配置。 我使用(Project Default)PHP CLI Interpreter和其他远程解释器的任意组合执行了所有Codeception运行配置。

为测试框架配置了正确的代码接收路径(phpstorm检测到代码接收版本),并且将代码接收.yml文件的路径保存为默认配置文件。所有运行配置都使用测试框架配置中的默认配置文件。

我还尝试在根codeception.yml文件中启用覆盖,尝试了work_dir: /appremote: 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/

tests / 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

<?php
declare(strict_types=1);
namespace App\Tests\App\Controller;

use App\Controller\AirplaneController;

class AirplaneControllerTest extends \Codeception\Test\Unit
{
    /**
     * @covers \App\Controller\AirplaneController::start
     */
    public function testsomeFeature()
    {
        $airplaneController = new AirplaneController();
        $airplaneController->start();
    }
}

我是否错过了配置中的某些内容? 最好的解决方案是对远程解释器使用docker-compose exec进行有效配置,因此其他服务(例如mysql或ldap)可用于功能测试。

hongxiu1016 回答:如何配置PhpStorm,Codeception和Docker以可靠地获得代码覆盖率

不幸的是,此刻它已无可救药了:https://youtrack.jetbrains.com/issue/WI-32625

,

我注意到 PHPStorm 使用此选项调用 codeception

--coverage-xml /opt/phpstorm-coverage/admin_service$unit_tests.xml

但是当测试完成时,我收到此消息

XML report generated in /opt/phpstorm-coverage/admin_service$$unit_tests.xml

注意文件名不同。所以我使用这个命令创建了一个链接

ln admin_service\$\$unit_tests.xml admin_service\$unit_tests.xml

并重新启动测试覆盖率。覆盖窗口出现了。

本文链接:https://www.f2er.com/3150557.html

大家都在问